运行服务器时,我的index.html页面的模板不存在/ 。其他模板也会发生相同的问题。 我已经尝试过解决以前遇到的类似问题的解决方案,例如检查模板目录并在settings.py文件中安装了应用程序,但似乎没有任何效果。 另外,当我在其他位置创建一个新的项目文件夹并将所有代码复制到那里时,它通常可以正常工作。 这是我的文件夹树:
我目前正在学习Django,并且在堆栈溢出时正在学习。任何帮助,将不胜感激?
这是我用于项目文件夹的urls.py代码:
from django.contrib import admin
from django.urls import path
from django.conf.urls import url,include
from basic_app import views
urlpatterns = [
url(r'^$',views.index,name='index'),
path('admin/', admin.site.urls),
url(r'basic_app/',include('basic_app.urls')),
]
这是我在basic_app下的urls.py文件:
from django.conf.urls import url
from basic_app import views
app_name= 'basic_app'
urlpatterns=[
url(r'^register/$',views.register,name='register')
]
这是我的views.py文件代码:
from django.shortcuts import render
from basic_app.forms import UserForm, UserProfileInfoForm
def index(request):
return render(request,'basic_app/index.html')
def register(request):
registered= False
if request.method=='POST':
user_form= UserForm(data= request.POST)
profile_form= UserProfileInfoForm(data= request.POST)
if user_form.is_valid() and profile_form.is_valid():
user= user_form.save()
user.set_password(user.password)
user.save()
profile= profile_form.save(commit=False)
profile.user=user
if 'profile_pic' in request.FILES:
profile.profile_pic= request.FILES['profile_pics']
profile.save()
registered= True
else:
print(user_form.errors ,profile_form.errors)
else:
user_form= UserForm()
profile_form= UserProfileInfoForm()
return render(request,'basic_app/registration.html',{'user_form':user_form,'profile_form':profile_form,
'registered':registered})
这是模板的我的settings.py文件代码:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIR=os.path.join(BASE_DIR,'templates')
STATIC_DIR=os.path.join(BASE_DIR,'static')
MEDIA_DIR=os.path.join(BASE_DIR,'media')
这是我已安装的应用列表:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'basic_app',
]
也是这样:
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',
],
},
},
]
答案 0 :(得分:0)
如果使用默认配置设置,则模板应位于learning_users/basic_app/templates/basic_app/
中,并按以下方式进行访问:
return render(request, `basic_app/index.html`, {})
其中index.html
是您的模板名称。
首先,这里的目录结构似乎有点多余,但是您也可以使用settings.py
配置文件来更改它。
在目录中,模板文件夹直接放置在项目文件夹(即learning_users
)内。除非您修改了配置文件以更改模板的路径,否则将导致错误。
答案 1 :(得分:0)
我认为在管理员中只需这样做
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['templates'],
'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',
],
},
},
]
您的视图应该是这样
return render(request,'basic_app/registration.html',{'user_form':user_form,'profile_form':profile_form,
'registered':registered})
希望这会有所帮助
答案 2 :(得分:0)
在settings.py中,检查 TEMPLATE_DIR 指向的目录,以便您可以配置确切的响应位置。
print(TEMPLATE_DIR)
然后在 views.py 中:
def index(request):
return render(request,'folder/my_html_file.html')
因此django从中渲染模板。
TEMPLATE_DIR +“ folder / my_html_file.html”
答案 3 :(得分:0)
但是也许您可以确保它可以在您的settings.py文件中起作用,并将此行添加到已安装的应用中
'basic_app.apps.Basic_appConfig'