2016-08-05 73 views
0

Ich bin neu in Django und benutze Version 1.9.8. Ich folgte dem offiziellen Tutorial, und jetzt versuche ich this fortgeschrittener. Ich bin am Ende/Checkpoint des Abschnitts "Registrierung von Benutzern". Wenn ich http://localhost:8000/register besuche, zeigt Django den Inhalt an, den ich auf meiner index.html-Seite unter gefunden habe, anstatt der, die während des Lernprogramms unter static/templates/authentication/register.html erstellt wurde.Probleme mit Django-URLs

Als ich am Anfang, wo ich bin, wurde ich empfange die folgenden Fehler ImportError: cannot import name 'IndexView', Referenzierung den urls.py

#urls.py 
from django.conf.urls import include,url 
from django.contrib import admin 
from django.conf.urls import patterns 

from rest_framework_nested import routers 
from authentication.views import AccountViewSet 

router = routers.SimpleRouter() 
router.register(r'accounts', AccountViewSet) 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^api/v1/', include(router.urls)), 
    url('^.*$', IndexView.as_view(), name='index'), #this line was causing the error 
] 

ich über this post von jemandem kam anders, im Tutorial folgte. Ich fügte hinzu, die IndexView Import meiner urls.py als solche

from authentication.views import AccountViewSet, IndexView 

Und dann fügte ich eine IndexView Klasse meiner views.py

# authentication/views.py 
.... 
class IndexView(TemplateView): 
    template_name = 'mytestproject/index.html' #this page is showing when I visit http://localhost:8000/register rather than the one located at static/templates/authentication/register.html 

Der IndexView Fehler ging weg und der Server lief ohne Fehler, aber als ich http://localhost:8000/register besuchte, wurde nichts angezeigt. Ich habe die Seite index.html geöffnet und Inhalt hinzugefügt und dann diesen Inhalt angezeigt. Django verwendet eindeutig die Indexdatei unter der Nummer anstelle der von mir erstellten Registerseite. Wie bekomme ich Django, um die Vorlage unter static/templates/authentication/register.html zu verwenden, wenn ich die Registrierungs-URL besuche? Ich bin verwirrt, vor allem, weil keine Methoden namens "register" in der Ansicht während des Tutorials definiert oder in der Datei urls.py angegeben wurden.

Dank

Antwort

1
url('^.*$', IndexView.as_view(), name='index'), 

.* in '^.*$', erzählt jede URL zu diesem IndexView

und

Sie did'nt URL für Ihr Registerblatt in url.py

hinzufügen gehen
url(r'^register/',views.yourview,name='givenameforthisurl') 
+0

Das ist der Teil, über den ich verwirrt bin. Soweit das Tutorial geht, wurden keine Servermethoden in serverseitig in views.py angelegt. Welche Ansicht und welchen Namen gebe ich dieser URL? Das einzige, was mit dem von mir erstellten Register zu tun hat, ist die Vorlage, die sich unter 'static/templates/authentication/register.html' befindet. Bedeutet das, dass das Tutorial Inhalt fehlt, oder verstehe ich etwas nicht? Verlassen sie sich möglicherweise auf das Routing des Winkels, um auf diese Vorlage zuzugreifen? Immerhin wurde es in den statischen Ordner gelegt. – user1852176

+0

Ja, Sie müssen die Ansichtsfunktion schreiben, um eine Seite anzuzeigen, oder wenn Sie die integrierten Ansichten von django verwenden, müssen Sie nur diese Pakete in url.py importieren, [siehe dieses Beispiel für integrierte Authentifizierungsansichten] (https: // docs .djangoproject.com/de/1.9/topics/auth/default/#modul-django.contrib.auth.view) – masternone