2017-09-26 10 views
1

私はDjangoを初めて使い、小規模なプロジェクトを開発することでそれを学びます。ジャンゴでurlを増やさないようにする方法

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

のI /ページのURLをログインに行く送信ボタンをクリックした後: 現在、私は、ログインapp.Iを作成していますが、私は1つのテンプレートでフォームタグに書き込まれている問題で、 下に直面しています。

と私はformタグの下に書かれている他のテンプレートで

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

と私のURLは以下のとおりです。

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') 

]

しかし、私はssueは私が行くようになり、ボタンのURLを送信する]をクリックし http://localhost:8000/login_page/ localhostのように、増加し続ける:8000/login_page /ようこそ/ はlocalhost:8000/login_page /ようこそ/ login_page

とそれが見つけることができないようので、それはエラーになります3番目のURLそれを修正する方法。 ?フォームタグでアクションのビューに移動できますか?

+1

フォームは 'POST'、ない' GET'する必要があります – MrE

+0

slackmartさんの答えに従ってください。これでやるべきですが、URLがそれをしているのは、先行する '/'のない相対URLを渡しているからです。これは、既存のURLの末尾に追加するだけで、ルートには移動しません。 –

答えて

1

URLテンプレートタグを使用します。そうすることで、このヘルパーテンプレートタグは自動的にURLを正しいURLに置き換えます。 Welcomeは、URL名です

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

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

は、他のURLと同じですか。ドキュメントへ

リンク:https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#url

+0

ねえ! @ neeraj-kumarが正しいです。両方のフォームのフォームメソッドはPOSTでなければなりません。 – slackmart

+0

ありがとうございました..今は正常に動作しています..... –

0

まず最初フォームは、{%csrf_token%}の必要をGETメソッドを使用していないので、もしあなたがフォームのメソッドをGETしたい場合は、それを削除します。

あなたは、常に異なるアプリケーション

の同じURLの違いを作るためのより良い方法がある名前空間の概念を使用するアプリのURLから新しいURLのを追加
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> 
+0

ちょっと!あなたが正しい。両方のフォームのフォームメソッドはPOSTでなければなりません。 – slackmart

+0

ありがとうneeraj ....私は再びそのような間違いをしないようにします:) –

関連する問題