Django 1.10中args的正确语法是什么?

时间:2017-02-23 14:46:15

标签: python django

我开始研究Django 1.10,但它使用1.6上的例子。这就是我在新版本中遇到语法问题的原因。

这是我的功能:

def article(request, article_id=1):
    comment_form = CommentForm
    @csrf_protect
    args = {}
    args['article'] = Article.objects.get(id=article_id)
    args['comments'] = Comments.objects.filter(comments_artile_id=article_id)
    args['form'] = comment_form
return render (request, 'articles.html', args)

我的追溯:

File "/home/goofy/djangoenv/bin/firstapp/article/views.py", line 30

args = {}      
       ^
SyntaxError: invalid syntax

请告诉我什么是正确的语法或我在哪里可以找到答案,因为我在Django Docs中找不到任何解释。

2 个答案:

答案 0 :(得分:1)

$site = Get-SPOSite -Identity https://mydemo-my.sharepoint.com/personal/sarad_mydemo_onmicrosoft_com Set-SPOUser -Site $site.Url -LoginName admin@mydemo.onmicrosoft.com -IsSiteCollectionAdmin $truepython decorator。将其置于方法定义之上以便工作。 此外,@csrf_protect行必须像方法体的其余部分一样缩进。

return

答案 1 :(得分:0)

CSRF Protect默认为ON,如果要使用装饰器,则需要将其放在documentation say之类的方法之前。

您的CommentForm是您的form.py中的一个对象(我猜)您需要像CommentForm()

那样打电话给他
@csrf_protect
def article(request, article_id=1):
    comment_form = CommentForm()
    args = {}
    args['article'] = Article.objects.get(id=article_id)
    args['comments'] = Comments.objects.filter(comments_artile_id=article_id)
    args['form'] = comment_form
    return render (request, 'articles.html', args)

但是你可以更轻松地做到这一点,Django在template.html中创建了一个带有相关名称示例的dict:{{ article }},以及wiews.py a中的对象/变量的名称(谁是Comments.objects.filter(comments_artile_id=article_id))。

@csrf_protect
def article(request, article_id=1):
    form = CommentForm()
    a = Article.objects.get(id=article_id)
    c = Comments.objects.filter(comments_artile_id=article_id)
    return render (request, 'articles.html', {
                'article': a,
                'comments': c,
                'comment_form': form})