为什么这个URL在Django中有效?它不在urls.py中

时间:2018-01-24 14:44:23

标签: django routing

我之前从未与Django合作过。我接手了另一个程序员开始的Django项目,他现在已经不在了。代码中有一些神奇的事情我不明白。例如,在此文件中:

urls.py

我明白这一点:

from django.conf.urls import url, include
from django.contrib import admin
from django.core.urlresolvers import reverse_lazy
from django.views.generic.base import RedirectView
from django.conf import settings
from core import views as core_views
from sugarlab.search.views import validate_collections, create_document, delete_interest, rename_interest, add_url, my_interests
from sugarlab.search.views import content, score, terms
from django.contrib.auth.views import logout as django_logout
from django.conf.urls.static import static

admin.autodiscover()

urlpatterns = [
    url(r'^admin/logout/$', django_logout,
        {'next_page': '/'}),
    url(r'^admin/', admin.site.urls),
    url(r'^accounts/logout/$', django_logout,
        {'next_page': '/'}),
    url(r'^accounts/', include('allauth.urls')),
    url(r'^unsecured/$', core_views.home),

令人困惑的部分是这两行:

from django.conf import settings

url(r'^accounts/', include('allauth.urls')),

" allauths"是这个文件中的一些配置:

settings/common.py

数据如下所示:

'allauth',
'allauth.account',
'allauth.socialaccount',
'django.contrib.auth',
'django.contrib.sites',
# Social/3rd party Authentication apps                                                                                                        
'allauth.socialaccount.providers.linkedin_oauth2',
'captcha'

不知何故,这是一个实际有效的网址:

/accounts/signup/

此文件完全空白:

settings/__init__.py

所以我有两个问题:

  1. 如何"导入设置"设法神奇地导入allauths?

  2. /accounts/signup/如何映射到实际视图?我在urls.py和设置中都没有看到任何内容,这会让我认为/accounts/signup/是一个有效的网址。

1 个答案:

答案 0 :(得分:2)

  

/ accounts / signup /如何映射到实际视图?我在urls.py中没有看到任何内容,也没有在设置中看到,这会让我认为/ accounts / signup /是一个有效的网址。

url(r'^ accounts /',include('allauth.urls')),

app中有另一个urls文件名为allauth,如果它是通过“pip”安装的,你可以在以下目录“lib / python * / site-package / allauth”中找到它

  • =您使用的python版本,例如2.7或3.5

ps allauth是一个众所周知的第三方应用程序,你可以快速谷歌搜索django allauth,你会发现它

  

“导入设置”如何能够神奇地导入真相?

它没有导入设置用于其他东西,例如像那样设置静态文件URL

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)