2014-01-24 34 views
1

我目前正在學習Django,並且正在嘗試添加表單來註冊用戶。在django中找不到頁面

現在我的問題開始真的很早,因爲每當我嘗試訪問我的註冊頁面時,我都會得到一個404。

我的3個文件如下:

views.py:只是一個Hello World顯示基本

from django.http import HttpResponse 

def index(request): 
    return HttpResponse("Hello World") 

def registration(request): 
    return HttpResponse("Registration page") 

urls.py(在我的項目):

from django.conf.urls import patterns, include, url 

from django.contrib import admin 

urlpatterns = patterns('', 
    (r'^$', include('myapp.urls')), # index with login/registration 
    (r'^grappelli/', include('grappelli.urls')), # grappelli URLS 
    (r'^admin/', include(admin.site.urls)), # admin site 
) 

最後urls.py(在我的應用程序中):

from django.conf.urls import patterns, url 

from myapp import views 

urlpatterns = patterns('', 
    url(r'^$',views.index, name='index'), 
    url(r'^registration/$',views.registration, name='registration'), 
) 

當我去我的正常指數(本地主機:8000),它顯示的Hello World我在views.py文件中寫道。但是,當我嘗試去註冊頁面,它只是返回我一個404(本地主機:8000 /註冊)。

現在,正如我所說我仍然在學習這件事,但我不明白爲什麼它不能正常工作。據我瞭解項目文件r'^$'指向localhost:8000,並在應用程序文件中的相同的正則表達式告訴它加載在這個位置的索引頁。現在當程序仍在localhost:8000中時,應該在localhost:8000/registration右邊加載另一個頁面?

如果你能向我解釋爲什麼這不起作用,以及我在想法中犯了什麼錯誤,這將是非常好的。

這是我的錯誤: Error404

當我把

(r'^randomstringhere/', include('myapp.urls')), # index with login/registration 

,而不是

(r'^$', include('myapp.urls')), # index with login/registration 

我可以通過本地主機到註冊頁面:8000/randomstringhere /註冊。但網站的目的是有一個選擇,你可以登錄或註冊本地主機:8000(或未來的域名www.randomdomainhere.com)和註冊/登錄表單本地主機:8000 /登錄,本地主機:8000 /註冊(www .randomdomainhere.com /註冊等)

+0

最後使用斜線:localhost:8000/registration /。至少這就是你的正則表達式對URL conf所說的。請參閱Odif Yltsaeb如何解決它的答案。 –

回答

0

您缺少url結尾處的$符號。

它應該是:

url(r'^registration/$',views.registration, name='registration'), 
0

Django的URL中的$符號表示end-of-string match character這是從正則表達式中借用的。所以,應該在應用程序的url上的url的末尾添加$。

url(r'^registration/$',views.registration, name='registration'), 

但是我們可以寫與不具有$(結束的字符串匹配字符),但我們也必須包括一個尾隨斜槓(/)正則表達式的URL。對於沒有$的網址,您必須在瀏覽器中打開url以符合正則表達式時輸入尾部斜線。在項目的urls.py

你的應用程序網址是

URL(R '^格拉佩利/',包括( 'grappelli.urls')),#格拉佩利URLS

所以,進入註冊頁面,則需要通過

本地主機瀏覽:8000 /格拉佩利/註冊/

即將應用URL中的路徑追加到應用項目的url路徑中。

瞭解更多關於網址here.

+0

嗯我試過之前,現在再次,但它沒有工作兩次。也許這個錯誤是在別的地方......我會添加我的導入以及404的屏幕截圖,但是因爲我可以打開標準索引頁,所以我不知道錯誤是否在導入內。 – Jutschge

+0

已更新答案...是否有效? –

+0

那麼grappelli實際上並不是我的項目^^它是一個django的管理主題(管理主題的方式正常工作)。我的問題是,我想要在localhost:8000上的「Hello world」和localhost:8000/registration上的註冊。據我瞭解'(r'^ $',include('myapp.urls')),#index with login/registration'就是它得到'url(r'^ registration/$',views。註冊,名稱='註冊'),來自。 – Jutschge

0

您需要從第一URL刪除$下面

urls.py給出(在我的項目):

from django.conf.urls import patterns, include, url 

from django.contrib import admin 

urlpatterns = patterns('', 
    (r'^', include('myapp.urls')), # index with login/registration 
    (r'^grappelli/', include('grappelli.urls')), # grappelli URLS 
    (r'^admin/', include(admin.site.urls)), # admin site 
) 

一個URL啓動與^並以$結尾。所以如果遇到$ django明白該網址已經結束,沒有什麼更多的面前。所以在你的情況下,它不會再尋找「註冊」。或者如果你的網址與「註冊」不匹配任何指定的網址。