发布按钮不执行任何操作(django表单)

时间:2018-02-17 00:06:08

标签: python django

我正在关注在线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'),

2 个答案:

答案 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中处理提交的数据后,您可以重定向到所需的网址,无需使用标记。