需要在模板列表中添加模板目录:
我正在尝试创建一个个人资料页面,该页面只是一个包含用户详细信息的页面,例如名字,姓氏,电子邮件等。但是我认为我的视图或url.py或设置有问题,在/ users / profile /(users / profile.html)给我一个TemplateDoesNotExist错误。不过其他页面工作正常。
这是我的回溯:
文件“ /Documents/morse_log/m_env/lib/python3.7/site-packages/django/core/handlers/exception.py”,第34行,内部响应= get_response(request)
文件“ /Documents/morse_log/m_env/lib/python3.7/site-packages/django/core/handlers/base.py”,第115行,位于_get_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 = wrapd_callback(request,* callback_args,** callback_kwargs )*
文件“ /Documents/morse_log/users/views.py”,第32行,在配置文件中返回render(request,'users / profile.html',args)
文件“ /Documents/morse_log/m_env/lib/python3.7/site-packages/django/shortcuts.py”,第19行,呈现内容= loader.render_to_string(模板名称,上下文,请求,使用= using )
文件“ /Documents/morse_log/m_env/lib/python3.7/site packages / django / template / loader.py”,第61行,在render_to_string模板= get_template(template_name,使用= using)
] >>文件“ /Documents/morse_log/m_env/lib/python3.7/site-packages/django/template/loader.py”,第19行,在get_template中引发TemplateDoesNotExist(templatename,chain = chain)
异常类型:/ users / profile /中的TemplateDoesNotExist>异常值: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:(在我的文本编辑器中,它说未使用'sender'值,类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
我正在尝试创建一个个人资料页面,该页面只是一个包含用户详细信息的页面,例如名字,姓氏,电子邮件等。但是我认为我的视图或url.py或设置有问题。 ..
需要在模板列表中添加模板目录:
'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
需要在模板列表中添加模板目录: