我试图创建一个配置文件页面,它只是一个包含用户详细信息的页面,比如名字、姓氏、电子邮件等等。但是我认为我的视图、我的url.py或我的设置有什么问题,这使我在/ TemplateDoesNotExist / profile /( user /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,request)中
*文件"/Documents/morse_log/m_env/lib/python3.7/site-packages/django/core/handlers/base.py",第113行,在_get_response response = wrapped_callback(request,*callback_args,**callback_kwargs)*中
文件“/Documents/morse_log/user/views.py”,第32行,配置文件返回呈现(request,‘user/profile.html’,args)
文件"/Documents/morse_log/m_env/lib/python3.7/site-packages/django/shortcuts.py",第19行,在呈现内容= loader.render_to_string(template_name、上下文、请求、using=using)中
文件"/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 raise (template_name,chain=chain)中
异常类型: TemplateDoesNotExist at /user/profile/ Exception值:user/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',
],
},
},
]/user/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'),
]/user/profile.html:
{% block content %}
<title>Profile</title>
<div class="container">
<p>
{{user}}
{{user.first_name}}
</p>
</div>
{% endblock %}用户/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)(在我的文本编辑器中,它说没有使用“发送方”值,未解决的属性引用类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发布于 2020-01-21 21:14:13
需要在模板列表中添加模板目录:
'DIRS': [os.path.join(BASE_DIR, 'templates')] 因此,请替换以下模板列表。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, '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',
],
},
},
]并以下列格式创建模板:
users
----|templates
----|users
-----|profile.html https://stackoverflow.com/questions/59849204
复制相似问题