Ketika saya menjalankan server saya mendapatkan Template Tidak Ada di / untuk halaman index.html saya. Masalah yang sama juga terjadi pada template lain. Saya sudah mencoba solusi untuk pertanyaan serupa yang diajukan sebelumnya seperti memeriksa direktori template dan menginstal aplikasi di file settings.py tetapi sepertinya tidak ada yang berhasil. Juga, ketika saya membuat folder proyek baru di beberapa lokasi lain dan menyalin semua kode di sana, biasanya berhasil. Ini adalah pohon folder saya:

enter image description here

Saat ini saya sedang belajar Django dan baru di stack overflow. Setiap bantuan akan dihargai?

Ini kode urls.py saya untuk folder proyek:

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')),
]

Ini file urls.py saya di bawah 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')
]

Ini kode file views.py saya:

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

Ini kode file settings.py saya untuk template:

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

Ini adalah daftar aplikasi Terinstal saya:

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'basic_app',
]

Juga ini:

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
Mayank Modi 27 Oktober 2019, 08:45

4 jawaban

Jawaban Terbaik

Di settings.py Anda, periksa direktori yang ditunjuk oleh TEMPLATE_DIR sehingga Anda dapat mengonfigurasi ke mana tepatnya itu akan dikirim.

print(TEMPLATE_DIR) 

Kemudian di views.py:

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

Jadi Django merender template dari.

TEMPLATE_DIR + "folder/file_html_saya.html"

0
sbhusal123 27 Oktober 2019, 08:43

Tetapi mungkin Anda dapat melakukan ini dengan yakin itu berfungsi di file settings.py Anda, tambahkan baris ini ke aplikasi yang diinstal

'basic_app.apps.Basic_appConfig'

0
Am_clifford 27 Oktober 2019, 10:18

Jika Anda menggunakan pengaturan konfigurasi default, template seharusnya dalam learning_users/basic_app/templates/basic_app/ dan diakses seperti berikut:

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

Di mana index.html adalah nama template Anda. Struktur direktori di sini mungkin tampak sedikit berlebihan pada awalnya, tetapi Anda juga dapat mengubahnya menggunakan file konfigurasi settings.py. Di direktori Anda, folder template ditempatkan langsung di dalam folder proyek (yaitu learning_users). Kecuali Anda telah memodifikasi file konfigurasi untuk mengubah jalur template, ini akan menghasilkan Error.

0
Hanif Ali 27 Oktober 2019, 06:29

Saya pikir di admin lakukan saja ini

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',
        ],
    },
},
]

Dan pandangan Anda harus seperti ini

return render(request,'basic_app/registration.html',{'user_form':user_form,'profile_form':profile_form,
                                                    'registered':registered})

Semoga ini membantu

1
Mahmoud Ahmed 27 Oktober 2019, 07:58