11

在我的 urls.py 中,我有一行代码 ('include(admin.site.urls)。但我在 python 的安装目录中找不到源文件,如 ..\site-packages\django\contrib\admin他们在哪里?

4

1 回答 1

17

在 python 中,模块可以从包的__init__.py;中加载。它不需要是同一目录中的文件。

如果你往里看,django/contrib/admin/__init__.py你会看到: from django.contrib.admin.sites import AdminSite, site

因此,如果您查看,django/contrib/admin/sites.py您会看到:

site = AdminSite()(在底部)

def get_urls(self):
        从 django.conf.urls 导入模式,url,包括

        如果设置。调试:
            self.check_dependencies()

        def wrap(view, cacheable=False):
            def 包装器(*args,**kwargs):
                return self.admin_view(view, cacheable)(*args, **kwargs)
            返回 update_wrapper(包装器,视图)

        # 管理站点范围的视图。
        urlpatterns = 模式('',
            网址(r'^$',
                换行(self.index),
                名称='索引'),
            url(r'^注销/$',
                换行(self.logout),
                名称='注销'),
            url(r'^password_change/$',
                wrap(self.password_change, cacheable=True),
                name='password_change'),
            url(r'^password_change/done/$',
                wrap(self.password_change_done, cacheable=True),
                name='password_change_done'),
            网址(r'^jsi18n/$',
                wrap(self.i18n_javascript, cacheable=True),
                名称='jsi18n'),
            url(r'^r/(?P\d+)/(?P.+)/$',
                换行(contenttype_views.shortcut),
                名称='view_on_site'),
            网址(r'^(?P\w+)/$',
                换行(self.app_index),
                名称='app_list')
        )

        # 添加每个模型的视图。
        对于模型,model_admin 在 Six.iteritems(self._registry) 中:
            urlpatterns += 模式('',
                url(r'^%s/%s/' % (model._meta.app_label, model._meta.module_name),
                    包括(model_admin.urls))
            )
        返回 url 模式

    @财产
    默认网址(自我):
        返回 self.get_urls()、self.app_name、self.name

注意:urls 映射到 get_urls()

于 2014-01-21T00:58:36.310 回答