Я заметил странное поведение с тем, как Django обрабатывает мои шаблоны url. Пользователь должен войти в систему и затем перенаправляться на страницу своего профиля. У меня также есть возможность для пользователя редактировать свой профиль.Django - view, url weirdness
Вот мои URL шаблоны для одного из моих приложений:
urlpatterns=patterns('student.views',
(r'profile/$', login_required(profile,'student')),
(r'editprofile/$', login_required(editprofile,'student')),
)
Это для приложения под названием студент. Если пользователь переходит к/student/profile, они должны получить представление профиля. Если они идут в/student/editprofile, они должны получить представление editprofile. Я настраиваю функцию login_required, которая выполняет некоторые проверки для пользователя. Это немного сложнее, чем я мог бы обрабатывать только с аннотациями.
Вот login_required:
def login_required(view,user_type='common'):
print 'Going to '+str(view)
def new_view(request,*args,**kwargs):
if(user_type == 'common'):
perm = ''
else:
perm = user_type+'.is_'+user_type
if not request.user.is_authenticated():
messages.error(request,'You must be logged in. Please log in.')
return HttpResponseRedirect('/')
elif request.user.is_authenticated() and user_type != 'common' and not request.user.has_perm(perm):
messages.error(request,'You must be an '+user_type+' to visit this page. Please log in.')
return HttpResponseRedirect('/')
return view(request,*args,**kwargs)
return new_view
В любом случае, странно то, что, когда я посещаю/студент/профиль, даже если я на нужную страницу, login_required печатает следующее:
Going to <function profile at 0x03015DF0>
Going to <function editprofile at 0x03015BB0>
Почему он печатает оба? Почему он пытается посетить оба?
Даже страннее, когда я пытаюсь посетить/студент/editprofile, страница профиля это то, что нагрузки, и это то, что напечатано:
Going to <function profile at 0x02FCA370>
Going to <function editprofile at 0x02FCA3F0>
Going to <function view_profile at 0x02FCA4F0>
view_profile является функцией в совершенно другом приложении.
Что так невыносимо о декораторах.login_required() и decorators.permission_required() ?? – hop