2016-08-29 82 views
0

背景其他視圖丟失:Django的 - 本地主機,儘管工作

通過Django的教程工作,並創建了多個觀點:

  • /管理
  • /應用

目前有問題儘管本地主機/應用程序和本地主機/管理員的意見工作(見下文),與「本地主機:8000」:

CODE

文件夾結構(的virtualenv):

main/ 
    db.sqlite3 
    manage.py 
    app/ 
     _init_.py 
     admin.py 
     apps.py 
     models.py 
     tests.py 
     views.py 
     urls.py 
     migrations/ 
     _init.py 

    main/ 
     _init_.py 
     settings.py 
     urls.py 
     wsgipy 

../main/app/views.py:

from django.http import HttpResponse 


def index(request): 
    return HttpResponse("Hello, world. You're at the app index.") 

../ main/app/urls.py:

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
] 

../main/main/urls.py:

from django.conf.urls import include, url 
from django.contrib import admin 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^app/', include('app.urls')), 
] 

問題/疑問:

  1. 本地主機/應用或本地主機/管理示出了呈現的頁面。但是,「localhost:8000」不會顯示原始的django登陸頁面(儘管它之前有效)。我錯過了什麼?
  2. 你推薦其他文件夾結構嗎?從我的理解來看,它現在的位置是/ main/main是糟糕的形式。你有關於新文件夾結構的建議嗎?
+0

只是讓想清楚:請在你的問題中使用完整的網址,他們以'http://'開頭。 –

回答

0

localhost/app或localhost/admin顯示一個渲染頁面。但是,「localhost:8000」不會顯示原始的django登陸頁面(儘管它之前有效)。我錯過了什麼?

看起來main/main/urls.py是全局的網址配置,這將意味着localhost:8000沒有定義的路由(只localhost:8000/adminlocalhost:8000/app。)你應該把URL模式在全局配置。你已經在應用程序範圍內定義了url(r'^$', views.index, name='index'),所以Django實際上是用app/來讀取它的。

您是否建議使用其他文件夾結構?根據我的理解, 這是糟糕的形式把它放在/ main/main目前的位置。 你有關於新文件夾結構的建議嗎?

一個好的結構,我認爲:

server/ 
    urls.py 
    manage.py 
    wsgi.py 
    settings.py 
    apps/ 
    app1/ 
    app2/ 
    app3/ 
0

../main/main/urls.py是定義你的URL模式的切入點,你有沒有明確的處理/這就是localhost:8000會是在這種情況下模式。你有兩個基本選項。

首先,如果您希望../main/app中的內容具有包含/app/的網址,您需要定義將存在於根級別的網址格式。通過創建根URL視圖功能開始,並添加一個URL模式爲/,見下圖:

../main/main/views.py

from django.http import HttpResponse 

def index(request): 
    return HttpResponse("This is the home page/site root") 

../main/主/ urls.py

from django.conf.urls import include, url 
from django.contrib import admin 
from . import views 

urlpatterns = [ 
    url(r'^$',), views.index, name='home', 
    url(r'^admin/', admin.site.urls), 
    url(r'^app/', include('app.urls')), 
] 

第二種選擇,如果你想在../main/app/的意見根URL下存在(/,而不是/app/),那麼只需要改變進口app URL模式的基地../main/main/urls.py

../main/main/urls.py

from django.conf.urls import include, url 
from django.contrib import admin 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^/', include('app.urls')), 
] 

沒有什麼不對您的文件夾結構。當然還有其他的佈局可以用於你的項目,但是你正在使用的是Django的默認開箱即用佈局。除非你有特定的理由使用不同的佈局,否則堅持你擁有的。花更多的時間學習更多關於Django的知識,當你更好地理解Django的各個部分如何組合在一起時,擔心試圖優化你的項目佈局。

我認爲你需要考慮的是你希望你的網站的URL看起來像什麼,然後圍繞它構建佈局。除非你想以這種方式組織你的代碼,否則你不需要app應用程序。作爲一個出發點,您可以將app應用程序中的所有內容都放在main之下,並將其擴展到其他應用程序,因爲它對項目有意義。