Django - 从查询字符串到编辑视图中获取ID的最佳实践

时间:2013-08-07 04:55:48

标签: python django forms

我想知道从编辑视图中使用网址中提取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。

对这两个选项的任何输入以及替代选项表示赞赏。

2 个答案:

答案 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)