观点:
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值来查看,调用函数上传数据库,将用户重定向到刷新的同一主页,然后新添加的项目将显示。
每次我提交的时候我都有一个空白页面,在终端我得到了一个错误说:
Method Not Allowed (POST): /
"POST / HTTP/1.1" 405 0
答案 0 :(得分:7)
正如我在代码中看到的那样,您对两个视图使用相同的URL,因此,每当您点击URL /
时,请求将转到第一个视图(IndexView),该视图可能没有任何post方法。更改article_add
视图的网址。这样做:
app_name = 'myapp'
urlpatterns = [
url(r'^article-add/$', views.article_add, name='article_add'),
url(r'^$', views.IndexView.as_view(), name='index'),
]
您将能够访问来自网址{host_address}/article-add/
答案 1 :(得分:2)
你的urls.py中有一个小错误,按照以下方式更改你的urls.py
DECLARE
CURSOR C1 IS
SELECT A, B, 100 * b / sum(b) over (partition by A) VAR_PCT FROM TBL;
BEGIN
FOR REC1 IN C1
LOOP
DBMS_OUTPUT.PUT_LINE(REC1.A ||'|'|| REC1.B ||'|'||REC1.VAR_PCT)
END LOOP;
END;
如果您在主项目urls.py中输入'myapp'urls.py,那么在html中的表单中也只是以这种方式放置app_name = 'myapp'
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^article-add/$', views.article_add, name='article_add'),
]
。