2
前几天我已经决定学习Python/Django和使用它在我的私人项目的一种实践。我在builidng'polls'应用程序中完成了djangoproject教程1-6,现在我开始自己做了。以正确的方式的Python/Django的处理HTTP请求
简单的问题 - 我想查看,创建,编辑和删除“交易”的端点。
到目前为止,我已经中views.py
from django.views import generic
from django.http import HttpResponseRedirect
from django.views.generic.edit import CreateView
from django.core.urlresolvers import reverse
from .models import Deal
class IndexView(generic.ListView):
context_object_name = 'latest_deals_list'
def get_queryset(self):
return Deal.objects.order_by('-created_date')[:10]
class DetailView(generic.DetailView):
model = Deal
class DealCreate(CreateView):
model = Deal
fields = ['title', 'url']
def post(self, *args, **kwargs):
title = self.request.POST["title"]
url = self.request.POST["url"]
try:
deal = Deal(tite=title, url = url)
deal.save()
except Exception as e:
print e
return HttpResponseRedirect(reverse('deals:detail', args=(deal.id,)));
下面我urls.py lokks这样的:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),
url(r'^create/$', views.DealCreate.as_view(), name='create')
]
这一切工作正常,但我很努力了解如何将其组织成更简洁的类API结构。我可以在路线中只有/交易,然后分别使用不同的模板实现所有方法GET/POST/PUT/DELETE吗?我会在indexView中做到这一点,只有在其他视图内打印表格?只是觉得我不适合在/创建POST方法,或者我是否会过度使用这个方法。
任何反馈将不胜感激。
如果你想有一个REST API,你可能希望使用django-rest-framework或不安分。否则,而不是浪费你的时间与Django的“GenericViews”只是写你自己的做正确的事情。 –
感谢您的提示。我已经意识到'GenericViews'不是一个好的选择,简单的功能与ModelForm相结合对于我想要构建的接口来说要好得多.REST API可能是完全不同的故事,当我到达那里时我会穿过那座桥。 – irwin