I'm writing a web app that uses the pinax-project-account and bootstrap. 
When a user logs in the login view should grab the 
ACCOUNT_LOGIN_REDIRECT_URL and redirect the user to it. There seems to be 
an issue with dynamic urls though because when I do this with a static 
/profile/ url, there is no problem. I've traced the stacktrace to it's root 
which is in the account app LoginView  in account.views. It seems that is 
where fallback_url is being assigned the value of 
ACCOUNT_LOGIN_REDIRECT_URL. 


account.views

def get_success_url(self, fallback_url=None, **kwargs):

    if fallback_url is None:

        fallback_url = settings.ACCOUNT_LOGIN_REDIRECT_URL

    kwargs.setdefault("redirect_field_name", self.get_redirect_field_name())

    return default_redirect(self.request, fallback_url, **kwargs)

      


   - Below is the rest of my related code. Does anyone know how to resolve 
   this?
   

settings.py

ABSOLUTE_URL_OVERRIDES = {

    "user_accounts.userprofile": lambda o: "/profile/%s/" % o.slug,

}

ACCOUNT_LOGIN_REDIRECT_URL = "profile_update"


views.py


class ProfileUpdateView(UpdateView):

    template_name = "account/profile.html"

    model = UserProfile

    context_object_name = "profile"

    slug_field = "slug"


urls.py


 url(r"^(?P<slug>)/", (ProfileUpdateView.as_view()), name="profile_update")


StackTrace


NoReverseMatch at /account/login/

Reverse for 'profile_update' with arguments '()' and keyword arguments '{}' not 
found. 1 pattern(s) tried: ['profile/(?P<slug>)/']

Request Method:POSTRequest URL:http://127.0.0.1:8000/account/login/Django 
Version:1.6.2Exception Type:NoReverseMatchException Value:

Reverse for 'profile_update' with arguments '()' and keyword arguments '{}' not 
found. 1 pattern(s) tried: ['profile/(?P<slug>)/']

Exception 
Location:/home/falcon/dev/tiger/env/local/lib/python2.7/site-packages/django/core/urlresolvers.py
 
in _reverse_with_prefix, line 429Python Executable:
/home/falcon/dev/tiger/env/bin/pythonPython Version:2.7.5Python Path:

['/home/falcon/dev/tiger/tigersite',
 '/home/falcon/dev/tiger/env/src/idios',
 '/home/falcon/dev/tiger/env/lib/python2.7',
 '/home/falcon/dev/tiger/env/lib/python2.7/plat-i386-linux-gnu',
 '/home/falcon/dev/tiger/env/lib/python2.7/lib-tk',
 '/home/falcon/dev/tiger/env/lib/python2.7/lib-old',
 '/home/falcon/dev/tiger/env/lib/python2.7/lib-dynload',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-i386-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/home/falcon/dev/tiger/env/local/lib/python2.7/site-packages']

Server time:Tue, 6 May 2014 00:23:02 +0000
Traceback Switch to copy-and-paste view<http://127.0.0.1:8000/account/login/#>

   - 
   
/home/falcon/dev/tiger/env/local/lib/python2.7/site-packages/django/core/handlers/base.py
    in get_response
   1. 
      
                          response = wrapped_callback(request, *callback_args, 
**callback_kwargs)
      
      ...
   ▶ Local vars <http://127.0.0.1:8000/account/login/#>
   - 
   
/home/falcon/dev/tiger/env/local/lib/python2.7/site-packages/django/views/generic/base.py
    in view
   1. 
      
                  return self.dispatch(request, *args, **kwargs)
      
      ...
   ▶ Local vars <http://127.0.0.1:8000/account/login/#>
   - 
   
/home/falcon/dev/tiger/env/local/lib/python2.7/site-packages/django/views/generic/base.py
    in dispatch
   1. 
      
              return handler(request, *args, **kwargs)
      
      ...
   ▶ Local vars <http://127.0.0.1:8000/account/login/#>
   - 
   
/home/falcon/dev/tiger/env/local/lib/python2.7/site-packages/django/views/generic/edit.py
    in post
   1. 
      
                  return self.form_valid(form)
      
      ...
   ▶ Local vars <http://127.0.0.1:8000/account/login/#>
   - 
   /home/falcon/dev/tiger/env/local/lib/python2.7/site-packages/account/views.py
    in form_valid
   1. 
      
                  result=form.is_valid()
      
      2. 
      
              )
      
      3. 
      
              return super(LoginView, self).form_invalid(form)
      
      4. 
      
      5. 
      
          def form_valid(self, form):
      
      6. 
      
              self.login_user(form)
      
      7. 
      
              self.after_login(form)
      
      1. 
      
              return redirect(self.get_success_url())
      
      ...
   1. 
      
      2. 
      
          def after_login(self, form):
      
      3. 
      
              signals.user_logged_in.send(sender=LoginView, user=form.user, 
form=form)
      
      4. 
      
      5. 
      
          def get_success_url(self, fallback_url=None, **kwargs):
      
      6. 
      
              if fallback_url is None:
      
      ▶ Local vars <http://127.0.0.1:8000/account/login/#>
   - 
   /home/falcon/dev/tiger/env/local/lib/python2.7/site-packages/account/views.py
    in get_success_url
   1. 
      
          def after_login(self, form):
      
      2. 
      
              signals.user_logged_in.send(sender=LoginView, user=form.user, 
form=form)
      
      3. 
      
      4. 
      
          def get_success_url(self, fallback_url=None, **kwargs):
      
      5. 
      
              if fallback_url is None:
      
      6. 
      
                  fallback_url = settings.ACCOUNT_LOGIN_REDIRECT_URL
      
      7. 
      
              kwargs.setdefault("redirect_field_name", 
self.get_redirect_field_name())
      
      1. 
      
              return default_redirect(self.request, fallback_url, **kwargs)
      
      ...
   1. 
      
      2. 
      
          def get_redirect_field_name(self):
      
      3. 
      
              return self.redirect_field_name
      
      4. 
      
      5. 
      
          def login_user(self, form):
      
      6. 
      
              auth.login(self.request, form.user)
      
      ▶ Local vars <http://127.0.0.1:8000/account/login/#>
   - 
   /home/falcon/dev/tiger/env/local/lib/python2.7/site-packages/account/utils.py
    in default_redirect
   1. 
      
              allowed_protocols=kwargs.get("allowed_protocols"),
      
      2. 
      
              allowed_host=request.get_host()
      
      3. 
      
          )
      
      4. 
      
          if next_url and is_safe(next_url):
      
      5. 
      
              return next_url
      
      6. 
      
          else:
      
      7. 
      
              try:
      
      1. 
      
                  fallback_url = urlresolvers.reverse(fallback_url)
      
      ...
   1. 
      
              except urlresolvers.NoReverseMatch:
      
      2. 
      
                  if callable(fallback_url):
      
      3. 
      
                      raise
      
      4. 
      
                  if "/" not in fallback_url and "." not in fallback_url:
      
      5. 
      
                      raise
      
      6. 
      
              # assert the fallback URL is safe to return to caller. if it is
      
      ▶ Local vars <http://127.0.0.1:8000/account/login/#>
   - 
   
/home/falcon/dev/tiger/env/local/lib/python2.7/site-packages/django/core/urlresolvers.py
    in reverse
   1. 
      
          return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, 
**kwargs))
      
      ...
   ▶ Local vars <http://127.0.0.1:8000/account/login/#>
   - 
   
/home/falcon/dev/tiger/env/local/lib/python2.7/site-packages/django/core/urlresolvers.py
    in _reverse_with_prefix
   1. 
      
                                   (lookup_view_s, args, kwargs, len(patterns), 
patterns))
      
      ...
   ▶ Local vars <http://127.0.0.1:8000/account/login/#>
   

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/981c67d3-48a9-4f2a-af0e-f1b74ace3531%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to