将ID从querystring获取到editvi的Django最佳实践

2024-04-19 23:55:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道从url中提取id以便在edit视图中使用的最佳实践是什么。我看到的大多数示例代码都使用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})

在这里,我注释了两个可能的选项,用于根据帖子中提交的ID使用Article对象填充。那个?XXX?表示我不确定如何引用传入的id

任何关于这两种选择的意见,以及其他备选方案,我们都将不胜感激。


Tags: theform视图idurlgetreturnif
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)

传入的id应该放入url本身,如:

url(r'^articles/(?P<id>\d+)/edit/$', 'views.article_edit', name = 'article_edit'),

然后,在视图中,您可以从视图参数id引用它:

^{pr2}$

另外,请看一下django“polls”教程的Writing a simple form一章-使用了相同的方法。在

希望有帮助。在

相关问题 更多 >