Django网址问题

时间:2016-08-05 04:56:10

标签: python django django-views django-urls

我是Django的新手并使用1.9.8版本。我按照官方教程,现在我正在尝试this更高级的教程。我在“注册用户”部分的结束/检查点。当我访问http://localhost:8000/register时,Django会在位于authentication/templates/authentication.html的index.html页面上显示我所拥有的内容,而不是在static/templates/authentication/register.html的教程中创建的内容。

当我最初到达目的地时,我收到以下错误ImportError: cannot import name 'IndexView',引用了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
]

我遇到了跟​​随同一个教程的其他人this post。我将IndexView导入添加到我的urls.py中

from authentication.views import AccountViewSet, IndexView

然后我在我的views.py

中添加了一个IndexView类
# 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

IndexView错误消失了,服务器运行没有错误,但是当我访问http://localhost:8000/register时,没有显示任何内容。我打开了index.html页面并添加了内容,然后显示了该内容。 Django显然使用位于authentication/templates/authentication.html的索引文件而不是我创建的寄存器页面。当我访问注册网址时,如何让Django使用位于static/templates/authentication/register.html的模板?我很困惑,主要是因为在教程期间没有在视图中定义名为'register'的方法,也没有在urls.py文件中指定。

由于

1 个答案:

答案 0 :(得分:1)

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

'^.*$',告诉任何网址将转到此IndexView

你没有为url.py

中的注册页面添加网址
url(r'^register/',views.yourview,name='givenameforthisurl')