我想知道从编辑视图中使用网址中提取ID的可接受的最佳做法是什么。我看到的大多数示例代码都使用了slug,我不需要处理它,因为SEO不是一个问题。
说我有类似的东西:
def article_edit(request):
if request.method == 'POST': # If the form has been submitted...
#a = get_object_or_404(Article, **?XXX?**)
#a = Article.objects.get(pk=**?XXX?**)
form = ArticleForm(request.POST, instance=a) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
form.save()
return redirect('/articles/') # Redirect after POST
else:
form = ArticleForm() # An unbound form
return render(request, 'article_form.html', {'form': form})
我根据POST中提交的ID,使用Article对象填充了两个可能的选项。 ?XXX?表示我不确定如何引用传入的ID。
对这两个选项的任何输入以及替代选项表示赞赏。
答案 0 :(得分:3)
传递到id
应该进入网址,例如:
url(r'^articles/(?P<id>\d+)/edit/$', 'views.article_edit', name = 'article_edit'),
然后,在视图中,您可以从视图参数id
:
def article_edit(request, id):
if request.method == 'POST': # If the form has been submitted...
article = get_object_or_404(Article, pk=id)
另外,请看一下django“民意调查”教程的Writing a simple form章节 - 使用相同的方法。
希望有所帮助。
答案 1 :(得分:2)
试试这个:
urls.py :
url(r'^articles/(?P<article_id>\d+)/edit/$', 'views.article_edit', name = 'article'),
views.py:
def article_edit(request, id):
if request.method == 'POST':
article = get_object_or_404(Article,id=article_id)