2016-08-29 5 views
0

背景取り組んで他のビューにもかかわらず、行方不明:ジャンゴ - LOCALHOSTが

Djangoのチュートリアルを働いて、複数のビューを作成:現在の問題を抱えて

  • /管理
  • /アプリ

をlocalhost/appおよびlocalhost/adminの表示が機能しているにもかかわらず、 "localhost: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.") 

../メイン/アプリ/ 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

あなたの質問に完全なURLを使用してください。彼らはhttp://で始まります。 –

答えて

0

localhost/appまたはlocalhost/adminはレンダリングされたページを表示します。しかし、 "localhost:8000"はオリジナルのdjangoランディングページを表示していません(以前は動作していましたが)。私は何が欠けていますか?

main/main/urls.pylocalhost:8000が定義されたルートがないことを意味するグローバルなURLの設定、であるように見えます(のみ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、この場合にはどうなるかである/を処理するために定義されたパターンを持っていません。あなたには2つの基本的なオプションがあります。

最初に、../main/appのURLに/app/が含まれているようにするには、ルートレベルに存在するURLパターンを定義する必要があります。ルートURLのビュー機能を作成することで起動し、/用URLパターンを追加し、以下を参照:

../main/main/views.py

from django.http import HttpResponse 

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

../main/

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')), 
] 

urls.py /メイン番目のオプション、あなたが../main/app/のビューは、ルートURL(/代わりの下に存在する場合210)はその後、ちょうど../main/main/urls.pyにインポートapp URLパターンのベースを変更:

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

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

../main/main/urls.pyフォルダ構造と間違って何もありません。もちろん、あなたのプロジェクトで使用できる他のレイアウトもありますが、使用しているのはDjangoのデフォルトのレイアウトです。別のレイアウトを使用する特定の理由がない限り、持っているものに固執してください。 Djangoの詳細を学び、Djangoの作品がどのようにぴったり合っているかをよりよく理解しているときは、プロジェクトレイアウトを最適化しようと心配してください。

私はあなたのサイトのURLをどのように見せたいかを考え、その周りにレイアウトを構築する必要があると思います。このようにコードを整理しない限り、appアプリは必要ありません。出発点として、アプリのすべてをmainの下に置いて、プロジェクトにとって意味のある他のアプリに展開することができます。