Cuando ejecuto el servidor obtengo La plantilla no existe en / para mi página index.html. El mismo problema ocurre para otras plantillas también. He intentado las soluciones para preguntas similares anteriores, como verificar el directorio de plantillas y las aplicaciones instaladas en el archivo settings.py, pero nada parece funcionar. Además, cuando creo una nueva carpeta de proyecto en otra ubicación y copio todo el código allí, generalmente funciona. Este es mi árbol de carpetas:
Actualmente estoy aprendiendo Django y nuevo en el desbordamiento de pila. ¿Cualquier ayuda sería apreciada?
Aquí está mi código urls.py para la carpeta del proyecto:
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')),
]
Aquí está mi archivo urls.py en basic_app:
from django.conf.urls import url
from basic_app import views
app_name= 'basic_app'
urlpatterns=[
url(r'^register/$',views.register,name='register')
]
Aquí está mi código de archivo 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})
Aquí está mi código de archivo settings.py para plantillas:
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')
Esta es mi lista de aplicaciones instaladas:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'basic_app',
]
También esto:
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',
],
},
},
]
4 respuestas
En su settings.py, compruebe el directorio señalado por TEMPLATE_DIR para que pueda configurar exactamente dónde está ponderando.
print(TEMPLATE_DIR)
Luego, en views.py :
def index(request):
return render(request,'folder/my_html_file.html')
Entonces django renderiza la plantilla desde.
TEMPLATE_DIR + "folder / my_html_file.html"
Creo que en admin solo haz esto
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',
],
},
},
]
Y tu punto de vista debería ser algo como esto
return render(request,'basic_app/registration.html',{'user_form':user_form,'profile_form':profile_form,
'registered':registered})
Espero que esto ayude
Si está utilizando la configuración predeterminada, se supone que las plantillas están en learning_users/basic_app/templates/basic_app/
y se accede a ellas de la siguiente manera:
return render(request, `basic_app/index.html`, {})
Donde index.html
es el nombre de tu plantilla. La estructura del directorio aquí puede parecer un poco redundante al principio, pero también puede cambiarla usando el archivo de configuración settings.py
. En su directorio, la carpeta de plantillas se coloca directamente dentro de la carpeta del proyecto (es decir, learning_users
). A menos que haya modificado los archivos de configuración para cambiar la ruta de las plantillas, esto generará un error.
Pero quizás pueda hacer esto si funciona en su archivo settings.py agregue esta línea a las aplicaciones instaladas
'basic_app.apps.Basic_appConfig'
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.