Я пытаюсь создать страницу профиля, которая просто является страницей с данными пользователя, такими как имя, фамилия, адрес электронной почты и т. Д. c. Но я думаю, что что-то не так с моим представлением, моим url.py или моими настройками, что приводит к ошибке TemplateDoesNotExist в / users / profile / (users / profile. html). Хотя другие страницы работают нормально.
Вот мой след:
Файл "/Documents/morse_log/m_env/lib/python3.7/site-packages/django/ core / handlers / exception.py ", строка 34, во внутреннем ответе = get_response (запрос)
Файл" /Documents/morse_log/m_env/lib/python3.7/site -packages / django / core / handlers / base.py ", строка 115, в _get_response response = self.process_exception_by_middleware (e, запрос)
* Файл" / Documents / morse_log / m_env / lib / python3 .7 / site-packages / django / core / handlers / base.py ", строка 113, в _get_response response = wrapped_callback (запрос, * callback_args, ** callback_kwargs) *
Файл "/Documents/morse_log/users/views.py", строка 32, в профиле возвращает рендер (запрос, 'users / profile. html', args)
File "/ Documents / morse_log / m_env / lib / python3 .7 / site-packages / django / shortcuts.py ", строка 19, в файле render content = loader.render_to_string (имя шаблона, контекст, запрос, используя = использование)
Файл "/Documents/morse_log/m_env/lib/python3.7/site packages / django / template / loader.py", строка 61, в render_to_string template = get_template (template_name, using = using)
Файл "/Documents/morse_log/m_env/lib/python3.7/site-packages/django/template/loader.py", строка 19, в get_template поднять TemplateDoesNotExist ( template_name, chain = chain)
Тип исключения: TemplateDoesNotExist в / users / profile / Значение исключения: users / profile. html
settings.py:
INSTALLED_APPS = [
# My apps
'morse_logs',
'users',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'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',
],
},
},
]
/ users / urls.py:
from django.urls import path, include
from django.contrib.auth.models import User
from . import views
app_name = 'users'
urlpatterns = [
# Include default auth urls.
path('', include('django.contrib.auth.urls')),
# Registration
path(r'/register/', views.register, name='register'),
path(r'/profile/', views.profile, name='profile'),
]
/ users / profile. html:
{% block content %}
<title>Profile</title>
<div class="container">
<p>
{{user}}
{{user.first_name}}
</p>
</div>
{% endblock %}
users / views.py:
from django.shortcuts import render, redirect
from django.contrib.auth import login
from django.contrib.auth.forms import UserCreationForm
from users.forms import RegistrationForm
from django.contrib.auth import views as auth_views
from django.contrib.auth.models import User
# Create your views here.
def register(request):
"""Register a new user"""
if request.method != 'POST':
# Display blank registration form
form = RegistrationForm()
else:
# Process completed form
form = RegistrationForm(data=request.POST)
if form.is_valid():
new_user = form.save()
# Log the user in and then redirect to home page
login(request, new_user)
return redirect('morse_logs:index')
# Display a blank or invalid form.
context = {'form': form}
return render(request, 'registration/register.html', context)
def profile(request):
args = {'user': request.user}
return render(request, 'users/profile.html', args)
users / model.py: (в моем текстовом редакторе написано, что значение «отправитель» не используется, «Неразрешенные атрибуты» ссылаются на «объекты» для класса UserProfile)
from django.db import models
from django import forms
from django.contrib.auth.models import User
from django.db.models.signals import post_save
# Create your models here.
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
description = models.CharField(max_length=100, default='')
def create_profile(sender, **kwargs):
if kwargs['created']:
user_profile = UserProfile.objects.create(user=kwargs['instance'])
post_save.connect(create_profile, sender=User)
forms.py:
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class RegistrationForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = (
'username',
'first_name',
'last_name',
'email',
'password1',
'password2'
)
def save(self, commit=True):
user = super(RegistrationForm, self).save(commit=False)
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.email = self.cleaned_data['email']
if commit:
user.save()
return user