gpt4 book ai didi

Django反向导致url循环导入,为什么?

转载 作者:行者123 更新时间:2023-12-02 10:43:21 25 4
gpt4 key购买 nike

我收到此错误:

The included urlconf 'fouraxis.urls' 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.

我知道 url 模式中有一些东西,它看起来像这样:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
url(r'^perfil/', include('clientes.urls'), namespace="cliente"),
url(r'^admin/', include(admin.site.urls))
]

clientes.url:

from django.conf.urls import url
from django.contrib.auth import views as auth_views

from clientes import views

urlpatterns = [
# login
url(r'^login/$', auth_views.login, {'template_name': 'perfiles/login.html'}, name="login"),
url(r'^logout/$', auth_views.logout, {'template_name': 'perfiles/logged_out.html'}, name="login"),

url(r'^mi_perfil/$', views.mi_perfil, name="mi_perfil"),
url(r'^registro_usuario/$', views.RegistroUsuario.as_view(), name="registro_usuario")
]

RegistroUsuario View 如下所示:

class RegistroUsuario(FormView):
template_name = "perfiles/registro_usuario.html"
form_class = UserCreationForm
success_url = reverse("cliente:mi_perfil") # THIS REVERSE

def form_valid(self, form):
return redirect("cliente:mi_perfil")

context = {'form': UserCreationForm}

我知道我可以用 perfil/mi_perfil 这样的纯文本 URL 替换 reverse。但是,我想知道为什么反向会发生这种情况,我在文档上找不到解释。另外,使用反向更好,因为它是动态的(如果我随时更改网址,只要保留其名称,它仍然有效)。

最佳答案

reverse() 调用是在导入 View 时进行的,这可能是在首次加载 urlconf 时进行的。您需要使用 reverse_lazy() 来代替:

from django.core.urlresolvers import reverse_lazy

class RegistroUsuario(FormView):
template_name = "perfiles/registro_usuario.html"
form_class = UserCreationForm
success_url = reverse_lazy("cliente:mi_perfil") # THIS REVERSE

def form_valid(self, form):
return redirect("cliente:mi_perfil")

context = {'form': UserCreationForm}

关于Django反向导致url循环导入,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34031818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com