2012-12-15 9 views
0

다른 뷰로 리다이렉트 (redirect)하여 사용자가 조건을 충족시키지 않고도 뷰에 액세스 할 수 없도록하려고합니다. 이 경우 성공적인 비밀번호 변경입니다. 또한 HttpResponseRedirect를 사용하여이 작업을 수행하려고합니다.Django - 왜 작동하지 않습니까?

이제는 역방향을 사용한 적이 없었지만,이 방법을 사용한다고 생각했습니다. 문제는 내가 반대로 일을 할 수 없다는 것이다. 다음 오류가 발생합니다.

ViewDoesNotExist at/account/password/ findadownload.main.views.foo를 가져올 수 없습니다. 뷰가 findadownload.main.views 모듈에 존재하지 않습니다.

url(r'^account/password/success/$', 'findadownload.accounts.views.password_success', name = 'password_success') 

다음과 같이 역 사용 :

return HttpResponseRedirect(reverse('password_success')) 

reverse 전달하는 것은 name입니다 kwarg

# URLS 

from django.conf.urls import patterns, include, url 
from django.contrib.staticfiles.urls import staticfiles_urlpatterns 
from django.conf import settings 


#SANDY 
from findadownload.sandy.views import * 


#TRIVIARIA 
from findadownload.trivia.views import * 
from findadownload.accounts.views import * 


# Uncomment the next two lines to enable the admin: 
from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    # Examples: 
    url(r'^$', 'findadownload.main.views.presidium_home', name='presidium_home'), 
    (r'^web/$', 'findadownload.main.views.web'), 
    (r'^web/developers/$', sandy_developers), 


    #SANDY (for findadownload!) 
    (r'^get/sandy/$', get_sandy), 
    (r'^get/sandy/download/$', get_sandy_download), 
    (r'^sandy/register/$', sandy_registration), 
    (r'^sandy/complete/$', sandy_complete), 
    (r'^web/shared/$', sandy_shared_files), 
    (r'^web/remove/all/$', sandy_remove_all), 
    (r'^web/remove/(?P<file_id>\w+)/$', sandy_remove_file), 
    (r'^about/$', 'findadownload.main.views.about'), 
    (r'^pytech/$', 'findadownload.main.views.pytech'), 
    (r'^pytech/aboutus$', 'findadownload.main.views.pytech_about'), 
    (r'^pytech/services$', 'findadownload.main.views.pytech_services'), 
    (r'^pytech/support$', 'findadownload.main.views.pytech_support'), 
    (r'^pytech/contactus$', 'findadownload.main.views.pytech_contact'), 
    (r'^pytech/sitemap$', 'findadownload.main.views.pytech_sitemap'), 
    (r'^pytech/search/$', 'findadownload.main.views.pytech_search'), 
    (r'^presidium', 'findadownload.main.views.presidium_home'), 


    #TRIVIARIA 
    (r'^register/$', register), 
    (r'^login/$', login_view, {'template': 'trivia/registration/login.html'}), 
    (r'^logout/$', logout_view), 
    (r'^trivia/$', submit_question, {'template': 'trivia/trivia_questions.html'}), 
    (r'^challenges/$', submit_question, {'template': 'trivia/trivia_challenges.html'}), 
    (r'^question/thanks/$', question_thanks), 
    (r'^question/answer/$', submit_answer), 
    (r'^question/answer/result/(\d+)/(.*)/$', answer_result), 
    (r'^question/answer/challenge/$', challenge_answer), 
    (r'^account/$', upload_avatar), 
    (r'^account/password/$', password_change), 
    url(r'^account/password/success/$', 'findadownload.accounts.views.password_success'), 
    (r'^(?P<username>\w+)/$', view_user_profile, {'template': 'trivia/trivia_view_user_questions.html'}), 
    (r'^(?P<username>\w+)/trivia/$', view_user_profile, {'template': 'trivia/trivia_view_user_questions.html'}), 
    (r'^(?P<username>\w+)/challenges/$', view_user_profile, {'template': 'trivia/trivia_view_user_challenges.html'}), 




    #FILE SHARING 
    (r'^web/share/(?P<file_id>\w+)/$', sandy_download), 
    (r'^web/report/(?P<file_id>\w+)/$', sandy_file_report), 
    (r'^web/like/(?P<file_id>\w+)/$', like_download), 
    #OTHER 
    (r'^web/profile/$', 'findadownload.main.views.web_profile'), 
    (r'^web/edit/$', 'findadownload.main.views.web_edit'), 
    (r'^trivia/$', 'findadownload.main.views.trivia_home', {'template': 'trivia/registration/index.html'}), 
    (r'^web/get/$', 'findadownload.main.views.web_get'), 
    (r'^web/progress/$', 'findadownload.main.views.web_progress'), 
    (r'^web/foo/$', 'findadownload.main.views.foo'), 
    (r'^web/search/$', 'findadownload.main.views.web_search'), 
    (r'^web/logout/$', 'findadownload.main.views.web_logout'), 
    (r'^web/resend/$', 'findadownload.main.views.web_resend'), 
    (r'^web/home/$', 'findadownload.main.views.web_home'), 
    (r'^web/history/$', 'findadownload.main.views.web_history'), 
    (r'^web/verify/(?P<link>\w+)/$', 'findadownload.main.views.web_activate'), 
    (r'^web/help/(?P<username>\w+)/$', 'findadownload.main.views.web_help'), 
    (r'^web/welcome/(?P<username>\w+)/$', 'findadownload.main.views.welcome'), 
    (r'^web/terms/$', 'findadownload.main.views.web_terms'), 
    (r'^web/privacy/$', 'findadownload.main.views.web_privacy'), 
    (r'^web/signup/$', 'findadownload.main.views.web_signup'), 
    (r'^web/login/$', 'findadownload.main.views.web_login'), 
    (r'^test$', 'findadownload.main.views.test'), 
    # url(r'^findadownload/', include('findadownload.foo.urls')), 


    # Uncomment the admin/doc line below to enable admin documentation: 
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), 

    # Uncomment the next line to enable the admin: 
    url(r'^admin/', include(admin.site.urls)), 
) 


if 1: 
    urlpatterns += patterns('', 
     url(r'^uploads/(?P<path>.*)$', 'django.views.static.serve', { 
      'document_root': settings.MEDIA_ROOT, 
      'show_indexes': True, 
     }), 
    ) 




urlpatterns += staticfiles_urlpatterns() 



    # VIEWS 

    from django.http import HttpResponse, HttpResponseRedirect 
    from django.shortcuts import render_to_response 
    from findadownload.accounts.forms import * 
    from django.contrib.auth.models import User 
    from django.contrib import auth 
    from findadownload.accounts.models import * 
    from django.core.urlresolvers import reverse 
    from findadownload.trivia.models import * 


    def password_success(request): 
     return render_to_response('trivia/trivia_password_success.html') 

    def password_change(request): 
     if request.user.is_authenticated(): 
      # if for is submitted 
      if request.method == 'POST': 
       form = PasswordForm(user=request.user, data=request.POST) 
       # for the avatar part 
       if form.is_valid(): 
        cd = form.cleaned_data 
        request.user.set_password(cd['confirm_password']) 
        request.user.save()`enter code here` 
        # redirect to profile page after POST 
        return HttpResponseRedirect(reverse('findadownload.accounts.views.password_success')) 
      else: 
       form = PasswordForm(user=request.user) 

      # render empty form 
      return render_to_response('trivia/trivia_password_change.html', {'form': form}, 
             context_instance=RequestContext(request)) 
     else: 
      return HttpResponseRedirect('/login/?next=%s' % request.path) 

답변

0

당신은 당신이 URL에이 경우, name kwargs로 지정해야 url 패턴에.

편집 :

내가 당신 urls.py의 나머지 부분을 볼 수 있습니다. Django는 foo이라는 이름의 뷰를 찾을 수 없기 때문에 문제가 reverse에 없다고 생각합니다.

+0

k 전체 URL로 편집했습니다. –

+0

괜찮습니다. 나는 그것을 해결했다! 글쎄, 네가 그랬어. 문제는 제 동생이 제가 사용하고있는 것과 동일한 urls.py를 사용하는 앱에서 작업하고 있으며 foo보기가 제 시각에서 반대 기능과 충돌하고 있다는 것입니다. 그래서 나는 그것을 간단하게 주석 처리했다. 이제 작동합니다! 나중에 그 견해를 자세히 검토하여 문제의 원인을 확인하십시오. 그러나 지금은 주석으로 남겨 두겠습니다. 어쨌든, 당신의 도움에 정말 감사드립니다. 감사 :) –