我开始研究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中找不到任何解释。
答案 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 $true
是python 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})