不允许使用Django方法(POST) [英] Django Method Not Allowed (POST)

查看:746
本文介绍了不允许使用Django方法(POST)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在视图中:

def article_add(request):
    print request.user, " is adding an article"
    if request.method == "POST":
        web_url = request.POST['web_url']
        Uploadarticle(web_url)
        return redirect('myapp:index')

在html中:

<form class="navbar-form navbar-right" role="form" method="post" action="{% url 'myapp:article_add' %}" enctype="multipart/form-data">
{% csrf_token %}
    <div class="form-group">
        <div class="col-sm-10">
        <input id="article_url" name="web_url" type="text">
        </div>
   </div>
   <button type="submit" class="btn btn-default"> + </button>
</form>

在url.py中:

app_name = 'myapp'
urlpatterns = [
    url(r'^$', views.IndexView.as_view(), name='index'),
    url(r'^$', views.article_add, name='article_add'),
]

我在这里要做的是通过html传递url值以查看,调用函数以上传数据库,将用户重定向到与刷新相同的主页,然后将显示新添加的项目.

What i'm trying to do here is to pass the url value through html to view, call the function to upload the database, redirect the user to the same home page as refresh then the newly added item will show up.

无论如何,每次提交时,我都会有一个空白页,在终端中,我会看到一条错误消息:

Somehow everytime I submit I got a blank page, in terminal I got an errors says:

Method Not Allowed (POST): /
"POST / HTTP/1.1" 405 0

推荐答案

正如我在代码中看到的那样,两个视图都使用相同的URL,因此,每当您单击URL /时,请求都将转到第一个视图(IndexView)可能没有任何发布方法.更改article_add视图的URL.这样做:

As I can see in the code, you are using same URL for both view, so, whenever you hit URL /, the request goes to first view(IndexView) which probably does not have any post method. Change the URL for article_add view. Do like this:

app_name = 'myapp'
urlpatterns = [
    url(r'^article-add/$', views.article_add, name='article_add'),
    url(r'^$', views.IndexView.as_view(), name='index'),

]

您将能够从URL {host_address}/article-add/

这篇关于不允许使用Django方法(POST)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆