有没有办法调试 Django url?

问题描述 投票:0回答:3

我在 Django url 方面遇到了问题,无法深入了解。我已尝试过此问题的答案中给出的建议,但没有帮助。

/urls.py

urlpatterns = [
    ...
    path('duo/', include('duo.urls')),
    path('users/', include('users.urls')),
]

duo/urls.py

urlpatterns = [
    ...
    path('', include('users.urls')),
    ...
]

用户/urls.py

urlpatterns = [
    path('', views.SelectPartner.as_view(), name='select-partner'),
    ...
]

当我使用网址http://192.168.1.138:8000/duo/时,我会进入该页面http://192.168.1.138:8000/accounts/login/?next=/duo/这是不存在的。

我无法想象这里发生了什么,因为项目中的任何地方都不存在accounts这个词

我可以使用一些工具来了解发生了什么吗?

django django-urls
3个回答
2
投票

您需要登录,这会将您发送到默认登录页面位置

如果您要使用默认的身份验证,您可以添加这些视图


0
投票

我认为您忘记在 URL 中使用该应用程序,然后再使用其他参数。然后,如果您要使用身份验证,它将默认在 URL 中提供身份验证。


0
投票
对于调试 Django URL 的一般方法,您可以在

django/urls/resolvers.py 中插入断点。在 URLResolver.resolve() 中。我通常将其设置为 IDE 条件断点,以便执行不会在每个 HTTP 请求和 URL 模式上停止。就在 for pattern in self.url_patterns:

 循环内部,我为唯一的 URL 路径、唯一的模式添加了一个条件断点 - 

# if your IDE doesn't do conditional breakpoints, just add an if- if 'unique_path_part' in path and 'unique_url_pattern' in str(self) and 'more_unique_stuff' in str(pattern): # add breakpoint here, like [pudb](https://pypi.org/project/pudb/) # e.g. import pudb; pu.db
Django 对于 URL 与任何模式不匹配的原因保持沉默,但这不一定是它的错。有时您必须使用断点来冻结时间才能了解 URL 或模式中的错误。

我承认这很糟糕。但有时它非常有用,特别是对于刚接触 Django 的开发人员或遇到模式问题的开发人员(例如,在我的例子中,正则表达式略有偏差)

© www.soinside.com 2019 - 2024. All rights reserved.