django - 我的用户更新表单未显示在我的模板中
问题描述
我的用户配置文件更新表单没有出现在我的模板中。我只能看到“更新”按钮和图例名称。但我没有看到实际的形式。
这是我的forms.py
from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from django.contrib.auth import get_user_model
from .models import Profile, Post, User
# User = get_user_model()
class UserCreationModelForm(UserCreationForm):
class Meta:
model = User
fields = ['username', 'first_name', 'last_name', 'country', 'city', 'email', 'password1', 'password2', 'access_challenge']
class UserUpdateForm(forms.ModelForm):
username = forms.CharField()
email = forms.EmailField()
class Meta:
model = User
fields = ['username', 'email' ]
这是我的views.py 我有两个观点。一种是基于分类的视图,另一种是基于功能的视图。
class CabinetView(LoginRequiredMixin, DetailView):
model = User
template_name = 'users/user_detail.html'
def get_object(self):
return self.request.user
def profile(request):
uform = UserUpdateForm()
pform = ProfileUpdateForm()
context = {
'uform': uform,
'pform': pform
}
return render(request, 'users/user_detail.html', context)
这是我的 urls.py
from django.urls import path
from .views import UserRegistrationView, CabinetView, PostCreateView, PostDetailView
from . import views
app_name = 'users'
urlpatterns = [
path('accounts/register/', UserRegistrationView.as_view(), name='register'),
path('accounts/cabinet/', CabinetView.as_view(), name='cabinet'),
path('accounts/cabinet/', views.profile, name='profile'),
path('accounts/cabinet/blog/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
path('accounts/cabinet/new/', PostCreateView.as_view(), name='post-create'),
path('', views.home, name='home'),
path('accounts/cabinet/blog/', views.blog, name='blog'),
path('accounts/cabinet/countries/', views.countries, name='countries'),
path('accounts/cabinet/cities/<int:pk>/', views.cities, name='cities'),
path('accounts/cabinet/address/<int:pk>/', views.address, name='address'),
这是我的 user_detail.html 模板
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Profile Info</legend>
{{ uform }}
{{ pform }}
</fieldset>
<div class="form-group">
<button class="btn btn-info btn-block" style="border-radius: 0; width: 200px; padding-left: 4px;" type="submit">Update</button>
</div>
</form>
解决方案
问题是CabinetView类和配置文件def 指向相同的 url。
因此,您需要将个人资料网址更改为:
path('accounts/cabinet/profile/', views.profile, name='profile'),
推荐阅读
- python - 如何在 Windows 10 PC 上创建 Docker 容器以在 Raspberry Pi 4 上运行
- jenkins - 如果声纳质量门失败,则将构建设置为不稳定
- sql - 在oracle中将数据拆分为2列
- ios - 在 Flutter 中安装原生 iOS pod
- yaml - 天蓝色 DevOps 管道中的依赖关系和条件 oder
- java - 静态方法和空指针异常Spring Boot的问题
- wso2 - 具有无效 json 的负载工厂异常
- php - CKFinder - 在服务器上上传文件时找不到文件夹
- python - 用一定数量的列对多面层图进行排序
- swift - 缩放以适应屏幕尺寸问题 Xcode 11