這是一個非常普遍且開放的話題。所以昨天我們決定我們想創建一個基於我們的網站的iOS應用程序,該應用程序目前正在使用Django構建。現在,像RoR一樣,Django被認爲對UI是透明的;它不應該關心用戶使用的UI。 (合適的MVC)。如何正確使用Django(網絡和移動部署)
如果我看一些我們的示例代碼,這裏是我們如何添加一個設備到我們的系統:
@login_required
def add(request):
r_user = request.user.userprofile
form = EquipmentFormAdd(request.POST or None, c_id=r_user.company_id, error_class=DivErrorList)
if form.is_valid():
equipment = form.save(commit=False)
equipment.company_id = r_user.company_id
equipment.added_by_id = request.user.id
default_file_path = EquipmentPicture.get_default_file_path()
url_bucket = r_user.company.s3_bucket.name + default_file_path
cell = form.cleaned_data['cell']
equipment.cell_order = cell.equipment_set.count() + 1
equipment_picture = EquipmentPicture.objects.create(
file=EquipmentPicture.get_default_file_path(),
slug=EquipmentPicture.get_default_slug(),
bucket_name=r_user.company.s3_bucket.name,
bucket=r_user.company.s3_bucket, added_by=request.user,
company=r_user.company, url_with_bucket=url_bucket)
equipment.picture = equipment_picture
equipment.save()
return redirect('equipment_index')
return render(request, 'equipment/add.html', {'equipment_form': form, 'company_id': r_user.company_id})
如果我看這個,我看到,我們正在呈現直線走模板並傳遞數據。這不適用於iOS。
幾個問題:
我看到很多人創造的REST API。如果我們可以用Django創建HTTPResponses,我真的不明白這一點。如果我們要使用像TastyPie這樣的東西,我們將無法像使用POST語句一樣創建一個設備(就像我們現在所做的那樣),就像看看我們當前的添加功能一樣,很多東西都是在功能和TastyPie將無法打電話。
我的主要問題是我們應該有一個REST API運行以及爲Web和iOS平臺無論是普通的Django服務器,或者只是具有相同的功能,根據它不同的切入點和效果?
您何時創建REST API?只有標準的POST和GET調用,創建和獲取數據時的很多功能現在都無法工作。那不好嗎?
我有點困惑...對不起,長期的問題,再次感謝!
因此......我應該建立一個REST API來獲取我的數據並將它用於我的iOS應用程序,或者只是調用Django URLS並返回數據? 從我的理解你的答案,需要外部數據的iOS應用程序會調用REST API? – abisson
我會在相同的答案中展開。 – rewritten