【问题标题】:How to organize and access URLS and TEMPLATES in django如何在 django 中组织和访问 URL 和模板
【发布时间】:2015-03-27 13:58:07
【问题描述】:

我刚刚开始学习 Django,我坚持这样的原则,即通过实践来学习最快和最好的方法。我正在构建我的第一个网络应用程序,非常感谢您在以下方面的帮助:

我正在努力让前端出现。但我很难理解 URLS 的工作方式。

我有以下目录:

/myApp
    /myApp
        /public
        /templates
            /account
                login.html
            base.html
        settings.py
        urls.py
        ...
    /account
        urls.py
        views.py

我的 myApp(主应用)“urls.py”文件中有这个

urlpatterns = patterns('',
    ...
    url(r'^$', include(account.urls), name='account'),
)

在我的帐户 urls.py 文件中,我已经有了 ff :

...
urlpatterns = patterns(
    'account.views',
    url(r'^$', 'login_user', name='login'),
)

我已经在 account views.py 文件中定义了以下内容:

def login_user(request):
    return render(request, 'account/login.html')

所以我猜这个请求应该呈现我的 login.html 文件。

但我得到的错误是,

NameError at /
name 'account' is not defined

因此,我认为我的 settings.py 文件一定有问题,对吧?

所以如果它有某种目的(只是重要的东西),那就是这里:

...
BASE_DIR = os.path.join(os.path.dirname(__file__), '.')
...
ROOT_URLCONF = 'myApp.urls'
WSGI_APPLICATION = 'myApp.wsgi.application'
TEMPLATE_DIRS = [
    os.path.join(BASE_DIR,'templates'),
] 
STATIC_ROOT = os.path.join(BASE_DIR,'static')
STATIC_URL = "/static/"
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'public'),
]

现在,我真的需要至少让前端正常工作。我希望我给你的细节能让你了解我现在是如何组织我的文件的。

附加说明:我只想为整个应用程序创建一个模板目录。正如您在结构上看到的那样,模板文件夹位于主应用程序内。如何在设置中配置它以使应用程序使用主模板文件夹?

【问题讨论】:

    标签: python django django-templates django-urls


    【解决方案1】:

    您应该将account.urls 放在引号中。还要从正则表达式中删除 $ 符号:

    url(r'^', include('account.urls')),
    

    account/urls.py 文件中,您应该将基本模块名称从oauth 更正为acount(您的视图是account.views.login_user,而不是oauth.views.login_user):

    urlpatterns = patterns('account.views',
        ....
    )
    

    【讨论】:

    • 感谢您的快速响应先生。你说的我已经做到了。但我仍然得到“NameError at /”。先生,当我说“include('account.urls')”时,应用程序会找到文件吗?因为我的帐户应用与主应用位于同一目录中。
    • 您的设置表明account 不是顶级模块。您可能需要将其更改为'babyancestry.account.urls'。至于您的视图函数,首选方法是导入视图函数 (from babyancestry.account.views import login_user) 并直接使用它,无需前缀参数或引号。所有其他方法将很快在 Django 2.0 中被弃用和删除。
    • INSTALLED_APPS 中的account 应用程序的名称是什么?是"account" 还是"babyancestry.account"
    • 先生,我已经编辑了问题的设置部分。先生,babyancestry是一个错字。它应该是 myApp。
    • 对不起先生,ROOT_URLCONF 应该是 myApp 文件夹中的那个。
    猜你喜欢
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 2011-07-10
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多