django 注册 redux URL 受具有多个查询参数的 url 影响
Posted
技术标签:
【中文标题】django 注册 redux URL 受具有多个查询参数的 url 影响【英文标题】:django registration redux URL's being effected by url with multiple query parameters 【发布时间】:2016-02-26 01:26:51 【问题描述】:当使用以下 url 时,由 django 注册 redux 提供的 My Url 不起作用:
url(r'^(?P<username>\w+)/(?P<slug>[-\w]+)/$', views.project_page, name='user_project'),
但是如果我像这样向该网址添加另一个级别,它们确实可以工作:
url(r'^projects/(?P<username>\w+)/(?P<slug>[-\w]+)/$', views.project_page, name='user_project'),
如果可能的话,我不想在其中添加额外的项目/ url 级别。为什么它会影响 django 注册 redux url,我该如何解决?任何帮助将不胜感激:-)
项目网址
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf import settings
from registration.backends.simple.views import RegistrationView
class MyRegistrationView(RegistrationView): #redirects to home page after registration
def get_success_url(self,request, user):
return '/register_profile'
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'', include('howdidu.urls')),
url(r'^accounts/register/$', MyRegistrationView.as_view(), name='registration_register'), #redirects to home page after registration
(r'^accounts/', include('registration.backends.simple.urls')),
)
# media
if settings.DEBUG:
urlpatterns += patterns(
'django.views.static',
(r'^media/(?P<path>.*)',
'serve',
'document_root': settings.MEDIA_ROOT), )
应用网址
from django.conf.urls import patterns, url
from howdidu import views
from django.contrib.auth.decorators import login_required
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
url(r'^register_profile/$', views.register_profile, name='register_profile'),
url(r'^update_profile/$', views.update_profile, name='update_profile'),
url(r'^create_project/$', login_required(views.CreateProject.as_view()), name='create_project'),
url(r'^(?P<username>\w+)/$', views.profile_page, name='user_profile'),
url(r'^(?P<username>\w+)/(?P<slug>[-\w]+)/$', views.project_page, name='user_project'),
)
【问题讨论】:
当您说它不起作用时,请同时发布问题所在。如果您有任何错误,请发布错误。这将使我们免于运行您的代码。 顺便说一句,当你说 redux 时,我猜你的意思是 regex? 您好,是djangoregistration redux,是一个注册应用。当我单击与该应用程序相关的任何链接时,例如注册、登录或注销,它将尝试加载到 url(r'^(?P问题是你的url排序,看看这个:
url(r'^admin/', include(admin.site.urls)),
url(r'', include('howdidu.urls')),
url(r'^accounts/register/$', MyRegistrationView.as_view(), name='registration_register'), #redirects to home page after registration
url(r'^accounts/', include('registration.backends.simple.urls')),
尤其是这个:
url(r'', include('howdidu.urls')),
这个 url 匹配所有内容,所以基本上 Django 会从上到下,如果在 url(r'', include('howdidu.urls'))
之前没有找到任何匹配项,它将匹配任何内容。这意味着你永远不会匹配
url(r'^accounts/register/$', MyRegistrationView.as_view(), name='registration_register'), #redirects to home page after registration
url(r'^accounts/', include('registration.backends.simple.urls')),
解决它的一种方法是将url(r'', include('howdidu.urls'))
放在网址的最底部:
url(r'^admin/', include(admin.site.urls)),
url(r'^accounts/register/$', MyRegistrationView.as_view(), name='registration_register'), #redirects to home page after registration
url(r'^accounts/', include('registration.backends.simple.urls')),
url(r'^', include('howdidu.urls')),
另一种方法是为url(r'^', include('howdidu.urls'))
设置另一个url级别:
url(r'^admin/', include(admin.site.urls)),
url(r'^howdidu/', include('howdidu.urls')),
url(r'^accounts/register/$', MyRegistrationView.as_view(), name='registration_register'), #redirects to home page after registration
url(r'^accounts/', include('registration.backends.simple.urls')),
【讨论】:
再次感谢@pythad!!我采用了您将 url(r'', include('howdidu.urls') 移动到底部的第一个修复方法,它起作用了:-)。你是明星!以上是关于django 注册 redux URL 受具有多个查询参数的 url 影响的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Django-Registration-Redux 注册表单放在其他页面上?