Я получаю шаблон не существует в / когда я запускаю свой сервер в Django - PullRequest
1 голос
/ 27 октября 2019

Когда я запускаю сервер, я получаю шаблон не существует в / для моей страницы index.html. Та же проблема возникает и для других шаблонов. Я пробовал решения для ранее заданных похожих вопросов, таких как проверка каталога шаблонов и установленных приложений в файле settings.py, но ничего не работает. Кроме того, когда я создаю новую папку проекта в каком-то другом месте и копирую туда весь код, это обычно работает. Это мое дерево папок:

enter image description here

В настоящее время я изучаю 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')),
]

Вот мой файл urls.py в 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')
]

Вот мои взгляды. код файла 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',
        ],
    },
},
]

Ответы [ 4 ]

0 голосов
/ 27 октября 2019

но, возможно, вы можете сделать это, убедившись, что он работает в вашем файле settings.py, добавьте эту строку в установленные приложения

'basic_app.apps.Basic_appConfig'

0 голосов
/ 27 октября 2019

Я думаю, что в админке просто сделайте это

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})

надеюсь, это поможет

0 голосов
/ 27 октября 2019

В вашем файле settings.py проверьте каталог, на который указывает TEMPLATE_DIR , чтобы вы могли настроить, куда именно он работает.

print(TEMPLATE_DIR) 

Затем в views.py :

def index(request):
    return render(request,'folder/my_html_file.html')

Таким образом, django отображает шаблон из папки.

TEMPLATE_DIR + "/my_html_file.html"

0 голосов
/ 27 октября 2019

Если вы используете настройки конфигурации по умолчанию, предполагается, что шаблоны находятся в learning_users/basic_app/templates/basic_app/ и доступны следующим образом:

return render(request, `basic_app/index.html`, {})

, где index.html - имя вашего шаблона. Поначалу структура каталогов может показаться немного избыточной, но вы также можете изменить ее, используя файл конфигурации settings.py. В вашем каталоге папка шаблонов находится прямо внутри папки проекта (т.е. learning_users). Если вы не изменили файлы конфигурации для изменения пути к шаблонам, это приведет к ошибке.

...