我正在关注在线django课程,其中一个练习包括创建博客。博客的其中一个元素包括“发布”按钮,但是当我点击它时没有任何反应。
这是代码:
HTML:
<a class = "btn btn-default" href="{% url 'post_publish' pk=post.pk %}">Publish</a>
views.py:
@login_required
def post_publish(request,pk):
post = get_object_or_404(Post,pk=pk)
post.publish()
return redirect('post_detail',pk=pk)
urls.py:
url(r'^post/(?P<pk>\d+)/publish/$',views.post_publish,name='post_publish'),
答案 0 :(得分:0)
检查您是否在设置文件中添加了以下详细信息。如果是,请跳过此部分。
<强> settings.py 强>
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, "templates")], # Add this to your settings file
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
myproject/
|-- myproject/
| |-- myapp/
| |-- myproject/
| |-- templates/ <-- here!
| | |-- myapp/
| | | |-- index.html
| | |-- base.html
| | +-- home.html
| +-- manage.py
+-- venv/
<强> views.py:强>
@login_required
def post_publish(request,pk):
post = get_object_or_404(Post,pk=pk)
return render(request, template_name.html,{'post': post})
尝试使用return render,这肯定会起作用。 在您的视图中,您没有在任何地方显示。你的template_name是什么。
答案 1 :(得分:-1)
来自Django Docs:
其他表单模板家具
不要忘记表单的输出不包含周围的标签或表单的提交控件。你必须自己提供这些。
https://docs.djangoproject.com/en/2.0/topics/forms/
您缺少类型为submit的输入:
<input type="submit" value="Submit">
在views.py中处理提交的数据后,您可以重定向到所需的网址,无需使用标记。