django - django def post 方法在 cbv 中不起作用
问题描述
我不知道为什么我不能覆盖这个帖子。当我发布表格时,我转到“/”目录,没有任何帖子。我已经知道表格可以正常工作,因为我将其用作 fbv
我的观点
class ProfileUpdateView(LoginRequiredMixin, View):
template_name = "accounts/update.html"
def get_object(self):
user = get_object_or_404(User, username=self.kwargs.get("username"))
return user
def get(self, request, *args, **kwargs):
user = get_object_or_404(User, username=self.kwargs.get("username"))
user_form = UserForm(instance=user)
if user.is_client:
print("client get is working")
profile = Client.objects.get(id=user.clients.id)
profile_form = ClientForm(instance=profile)
if user.is_artisan:
profile = Artisan.objects.get(id=user.artisans.id)
profile_form = ArtisanForm(instance=profile)
return render(
request,
self.template_name,
{"user_form": user_form, "profile_form": profile_form},
)
def post(self, request, *args, **kwargs):
print("post is working")
if user.is_client:
print("client post is working")
profile_form = ClientForm(
request.POST, request.FILES, instance=profile
)
user_form = UserForm(request.POST, request.FILES, instance=user)
if user.is_artisan:
profile_form = ArtisanForm(
request.POST, request.FILES, instance=profile
)
user_form = UserForm(request.POST, request.FILES, instance=user)
if profile_form.is_valid() and user_form.is_valid():
print("form validation is working")
created_profile = profile_form.save(commit=False)
user_form.save()
created_profile.save()
reverse("accounts:profile", kwargs={"username": self.user.username})
return render(
request,
self.template_name,
{"user_form": user_form, "profile_form": profile_form},
)
模板
<form action="." method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ user_form.as_p }}
<p> client form</p>
------------------------------------------------
{{ profile_form.as_p }}
<button class="btn btn-primary btn-round" type="submit">update</button>
</form>
解决方案
您的表单操作设置为"."
,即“此目录”。
相反,只需将其保留为 POST 到当前 URL。
<form method="POST" enctype="multipart/form-data">
推荐阅读
- r - 如何用锯齿形或斜线填充 ggplot geom_map 中的 NA 值?
- sharepoint - 从 SharePoint 下载 MS Graph API 文件
- python - Python blackjack:如何构造一个 if 语句来确定 Ace 是否应该变成 1?
- mysql - 使用连接 MySQL 时字段列表中的未知列
- ios - -[RCTRootView cancelTouches]` 已弃用,将很快在反应原生地图中删除
- mysql - 如何加入这两个查询?找出谁共享名字和姓氏以及有多少人
- google-sheets - 仅当第 1 列中的值包含第 2 列中的特定单词时,才从具有 2 列的范围中提取值
- selenium - 登录网站时如何使用 puppeteer/selenium 重用保存的凭据/密码?
- reactjs - 组件在异步 React 上下文更新时呈现两次
- c# - 依赖注入:两个服务子类,但如何判断要实例化哪一个