为什么Django开发服务器将我的应用程序带到另一个应用程序的地址?

时间:2016-04-21 19:15:53

标签: django python-venv django-dev-server

在浏览了Django Project关于创建一个名为polls的轮询应用程序的教程之后,我在同一个虚拟环境中以另一个名称启动了我自己的项目。现在,我在索引视图下的新应用中所执行的操作仍然仅显示在http://127.0.0.1:8000/polls/处,http://127.0.0.1:8000/mynewproject/

我需要帮助来纠正这个问题,或者在一个虚拟环境中,我可以在一个django项目上工作吗?作为第二个问题,我应该在不同的虚拟环境中设置每个项目吗?

1 个答案:

答案 0 :(得分:0)

第一回答:

首先我要提到这两件事

  1. 虚拟中有多少项目并不重要 每个环境都可以由不同的RegExp("\b[eht]\d{6}",'i')处理。
  2. 如果你做的话,每个项目都会在不同的地址上运行 应用程序不会在不同的地址上运行(直到您手动执行)。
  3. 正如您在此处所提到的,您已在同一项目中创建了另一个应用程序,如此

    manage.py

    因此,如果您为每个特定的应用程序注册urlpatterns,例如

    Project
    -- manage.py
    -- Project
    -- -- settings.py
    -- -- urls.py <<--- Main url pattern file for whole project
    -- -- wsgi.py
    -- App1
    -- -- views.py
    -- -- models.py
    -- -- urls.py <<-- Another specific urls pattern file for App1 (optional)
    -- -- others
    -- App2
    -- -- views.py
    -- -- models.py
    -- -- urls.py <<-- Another specific urls pattern file for App2 (optional)
    -- -- others
    

    from django.conf.urls import url
    from . import views
    
    urlpatterns = [
        url(r'^home/$',views.home, name = "app_home"),
    ]
    

    然后您必须在from django.conf.urls import url from . import views urlpatterns = [ url(r'^home/$',views.home, name = "app_home"), ] 中包含这两个urls.py文件,就像这样

    projects main urls.py

    或者如果您from django.conf.urls import url, include urlpatterns = [ url(r'^app1/', include('app1.urls')), url(r'^app2/', include('app2.urls')), ] ,您可以在主don't wanna go like this

    中注册both url patterns

    来自django.conf.urls导入网址,包含 来自django.contrib import admin

    urls.py

    所以,就是这样,你只需处理urlpatterns = [ url(r'^app1/home', App1.views.home), url(r'^app2/home', App2.views.home), ] 个文件。

    第二个答案: 您可以在单个虚拟环境中创建多个项目。但是包等及其版本的配置对所有人来说都是一样的。如果您在那里进行更改(通过升级,降级,安装或卸载),那么它将影响该虚拟环境中的所有项目。