2017-09-26 1 views
1

저는 장고를 처음 사용하고 작은 프로젝트를 개발함으로써 그것을 배우게되었습니다. 현재 내가 만드는 오전 로그인 app.I 내가 하나의 템플릿에서 양식 태그에 쓴 , 문제 아래에 직면하고있다 :장고에서 URL 증가를 피하는 방법

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

난/페이지 URL을 로그인 간다 제출 '버튼을 클릭 한 후.

그리고 난 폼 태그 아래에 작성한 다른 템플릿

,

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

]

그러나 나는 내가 계속과 같은 URL이 계속 증가 전송 버튼 클릭으로 ssue이다 http://localhost:8000/login_page/ 로컬 호스트 : 8000/login_page/환영/ 로컬 호스트 :/login_page

따라서 그것이 찾을 수있는 오류를 제공 8000/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

우선 양식에 GET 방식을 사용한다면 어떤 {%의 csrf_token의 %}의 필요 그래서 당신은 양식 방법을 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 .... 나는 다시 그런 실수를하지 않으려 고 노력할 것입니다 :) –