由于重定向上的login_required而使用reverse_lazy,但问题仍然存在:作为循环导入

时间:2015-11-25 17:53:26

标签: django django-views django-urls

我有一个错字,但只是在我处理了这段代码之后才弄乱了:

我尝试重定向到另一个表单并使用相对链接,我们最终使用redirect_lazy并在应用程序中使用url.py:url(r'^ step1 / $',views.step1,name ='步骤1' ),

我们从一种形式重定向到另一种形式,当您的应用拥有自己的网址时,它不会将相对网址重定向到某个表单:它可能会导致重大问题......无论如何,如果有人卡在那里我会分享整个解决方案。

............................................... ......................... 我有一个问题,我认为是来自使用login_required。这说明修复是使用我在重定向中执行的lazy_reverse,这消除了网站广泛崩溃,并在下面显示相同的错误消息。现在它被孤立到了自己的视野。我认为这是渲染,但我不确定该怎么做......任何帮助都会很棒:

                    *makeProfile app:*

views.py

@login_required

def step1(request):

   title =" Step 1 of 4 "

   profile, created = Profile.objects.get_or_create(user=request.user)
   form = step1Form(request.POST or None, instance=profile)

   context ={
     "title":title,
     "form":form

}

   if form.is_valid():
     instance =form.save(commit=False)
     instance.user = request.user


     name = form.cleaned_data.get("name")
     surname = form.cleaned_data.get("surname")
     country = form.cleaned_data.get("country")
     state = form.cleaned_data.get("state")
     city = form.cleaned_data.get("city")
     statusType = form.cleaned_data.get("statusType")


     instance.name = name
     instance.surname = surname
     instance.country = country
     instance.state = state
     instance.city = city
     instance.statusType = statusType

     instance.save()

     return HttpResponseRedirect(reverse_lazy('makeProfile:step2'))

  return render (request, "makeProfile/step1.html", context)

url.py

from django.conf.urls import include ,url,patterns
from . import views

urlpatters = [

 url(r'^$', 'views.step1', name='step1'),
 url(r'^$', 'views.step2', name='step2'),
 url(r'^$', 'views.step3', name='step3'),
 url(r'^$', 'views.step4', name='step4'),

 ]

root :url.py

from django.conf import settings
from django.conf.urls import patterns, include, url
from django.conf.urls.static import static
from django.contrib import admin



urlpatterns =  [
   # Examples:
   url(r'^$', 'newsletter.views.home', name='home'),

   url(r'^question/(?P<id>\d+)/$', 'questions.views.single',   name='question_single'),
   url(r'^question/$', 'questions.views.home', name='question_home'),

   url(r'^contact/$', 'newsletter.views.contact', name='contact'),
   url(r'^about/$', 'ruLinked.views.about', name='about'),

   url(r'^makeProfile/',   include('makeProfile.urls',namespace='makeProfile')),

   url(r'^admin/', include(admin.site.urls)),
   url(r'^accounts/', include('registration.backends.default.urls')),
]

# if settings.DEBUG:
#   urlpatterns += static(settings.STATIC_URL,     document_root=settings.STATIC_ROOT)
#   urlpatterns += static(settings.MEDIA_URL,  document_root=settings.MEDIA_ROOT)

回溯

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8888/makeProfile/step1

Django Version: 1.8.3
Python Version: 3.4.3
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'crispy_forms',
'registration',
'newsletter',
'questions',
'makeProfile')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware')


Traceback:
    File "/home/g4/django/ruLinked/lib/python3.4/site-   packages/django/core/handlers/base.py" in get_response
  108.                 response = middleware_method(request)
   File "/home/g4/django/ruLinked/lib/python3.4/site- packages/django/middleware/common.py" in process_request
     74.             if (not urlresolvers.is_valid_path(request.path_info,   urlconf) and
    File "/home/g4/django/ruLinked/lib/python3.4/site-  packages/django/core/urlresolvers.py" in is_valid_path
     647.         resolve(path, urlconf)
    File "/home/g4/django/ruLinked/lib/python3.4/site-  packages/django/core/urlresolvers.py" in resolve
     522.     return get_resolver(urlconf).resolve(path)
    File "/home/g4/django/ruLinked/lib/python3.4/site- packages/django/core/urlresolvers.py" in resolve
      368.                     sub_match = pattern.resolve(new_path)
    File "/home/g4/django/ruLinked/lib/python3.4/site-packages/django/core/urlresolvers.py" in resolve
     366.             for pattern in self.url_patterns:
    File "/home/g4/django/ruLinked/lib/python3.4/site-packages/django/core/urlresolvers.py" in url_patterns
    411.             raise   ImproperlyConfigured(msg.format(name=self.urlconf_name))

Exception Type: ImproperlyConfigured at /makeProfile/step1
Exception Value: The included urlconf '<module 'makeProfile.urls' from   '/home/g4/django/ruLinked/src/makeProfile/urls.py'>' does not appear to   have any patterns in it. If you see valid patterns in the file then the   issue is probably caused by a circular import.

对堆栈溢出有一些答案,但他们在重定向上使用reverse_lazy解决了这个问题,所以不确定我的是什么。

非常感谢你,如果你读完了所有这些。

2 个答案:

答案 0 :(得分:0)

我认为你需要这样做;

urlpatterns = [

   url(r'^step1/$', 'views.step1', name='step1'),
   url(r'^step2/$', 'views.step2', name='step2'),
   url(r'^step3/$', 'views.step3', name='step3'),
   url(r'^step4/$', 'views.step4', name='step4'),

]

答案 1 :(得分:0)

您有拼写错误,应该是IS MISSING,而不是urlpatterns

urlpatters

您不需要在step1视图中使用urlpatters = [ url(r'^$', 'views.step1', name='step1'), url(r'^$', 'views.step2', name='step2'), url(r'^$', 'views.step3', name='step3'), url(r'^$', 'views.step4', name='step4'), ] ,因为在加载url配置后,视图中的调用会发生。您可以使用重定向快捷方式进一步简化代码。

reverse_lazy