如何避免在django中增加网址

时间:2017-09-26 01:44:36

标签: python django django-forms

我是Django的新手并通过开发小项目来学习它。 目前我正在创建登录app.I面临下面的问题, 我在一个模板中写了表单标签:

<form method="GET" action="login_page/">
    {% csrf_token %}
    <button type ="submit"> Login</button>
</form>

点击提交按钮后,我转到登录/页面网址。

在另一个模板中,我写了下面的表格标签,

<form method="GET" action= "Welcome/">
        {% csrf_token %}
        <button type ="submit"> Sign Up</button>
</form>

我的网址是:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^login_page/', include('login.urls'))
]

urlpatterns的= [

   #url(r'^$',TemplateView.as_view(template_name='base.html'),name='base'),
   url(r'^$',views.HomeView.as_view(),name='home'),
   url(r'^Welcome/$', views.WelcomeView.as_view(), name='Welcome'),
   #url(r'^Welcome/$',TemplateView.as_view(template_name='Welcome.html'),name='Welcome'),
   url(r'^logout/$',TemplateView.as_view(template_name='Logout.html'),name='Logout'),
   url(r'^home/$',views.HomeView.as_view(),name='home')

但是问题就在于我继续点击提交按钮网址不断增加,比如     http://localhost:8000/login_page/     本地主机:8000 / login_page /首页/     本地主机:8000 / login_page /欢迎/ login_page

因此无法找到第3个网址,因此会出错。如何纠正它。 ?我们可以在表单标签中查看操作视图吗?

2 个答案:

答案 0 :(得分:2)

使用网址模板标记。通过这样做,这个帮助模板标签将自动用正确的URL替换url。

<form method="POST" action="{% url 'Welcome' %}">

其中Welcome是网址名称,

url(r'^Welcome/$', views.WelcomeView.as_view(), name='Welcome'),
                                                      #  ^ this one

对其他网址也这样做。

链接到文档:https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#url

答案 1 :(得分:0)

首先如果您的表单使用GET方法,则不需要{%csrf_token%}如果您想要表单中的GET方法,请将其删除。

当您从应用网址添加新网址时,请始终使用命名空间概念,以便更好地区分不同应用的相同网址

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^login_page/', include('login.urls', namespace='login_page'))
                                               # ^ add namespace
]


<form method="GET" action= "{% url 'login_page:Welcome' %}">
        <button type ="submit"> Sign Up</button>
</form>
相关问题