尝试设置urls.py以定向到index.html

时间:2019-11-30 10:32:54

标签: python django

顾名思义,我正在尝试将urls.py文件设置为指向index.html文件。

这是我的项目的结构:

-->mysiteX
---->.idea
---->mysite
------->migrations
       __init__
       admin.py
       apps.py
       models.py
       test.py
       views.py
---->mysiteX
-------->templates
            index
       ---->css
       ---->fonts
       ---->js
       ---->vendors
       __init__
       settings
       urls
       wsgi
----->venv
db.sqlite3
manage

这是我的urls.py文件的样子

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

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

我的views.py文件

from __future__ import unicode_literals
def index_file(request):
    return render(request, "index.html")

settings.py:

import os, sys
abspath = lambda *p: os.path.abspath(os.path.join(*p))

PROJECT_ROOT =  abspath(os.path.dirname(__file__))
sys.path.insert(0, PROJECT_ROOT)
TEMPLATE_DIRS = (
    abspath(PROJECT_ROOT, 'templates'),
)

当我运行manage.py时,我会看到此页面 landing page

在对我的urls.py文件进行如此程度的更改后更新:

from django.conf.urls import url
from django.contrib import admin
from gradientboost import views

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

这就是我得到的 update

第二次更新 根据给出的答案更改了我的settings.py文件

import os, sys

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIR = os.path.join(BASE_DIR, 'mysiteX/templates')
...
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [TEMPLATE_DIR],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

但是仍然出现此错误 second update

3 个答案:

答案 0 :(得分:2)

您需要更改自己的Urls.py

因为您要更改管理员网址,所以管理员网址用于管理员登录和网站控制!

并且如果您添加index/,则需要像这样domainname.com/index输入您的浏览器

因此,如果您希望index.html显示在网站首页上,请尝试输入我的代码:

如果您浏览此链接,请尝试此操作127.0.0.1:8000

from django.conf.urls import url
from django.contrib import admin
from mysite import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', views.index_file, name='YOUR NAME')
]

如果您尝试使用此链接127.0.0.1:8000/index,请尝试以下操作:

from django.conf.urls import url
from django.contrib import admin
from mysite import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/$', views.index_file, name='YOUR NAME')
]

也将此添加到您的Settings.py

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIR = os.path.join(BASE_DIR,'mysiteX/templates')

并将其添加到您的Settings.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [TEMPLATE_DIR,],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

答案 1 :(得分:0)

创建一个html模板index.html,您的url应该被重定向到视图。

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', your_view, name = 'index'),
]

答案 2 :(得分:0)

您没有引用urls.py中的模板。那是为了匹配到视图函数的路由,如果合适的话,告诉Django渲染模板是视图的工作。您已经有一个呈现index.html的简单视图,只需要在urlconf中引用它即可。

如果要将index.html呈现在网站的根目录,则需要将此行添加到urls.py中(编辑:确定路线):

url(r'^$', index_file)

在您的urlconf顶部还需要from mysite.views import index_file