Django表单用户表单未登顶
Posted
技术标签:
【中文标题】Django表单用户表单未登顶【英文标题】:Django forms User form not summited 【发布时间】:2021-06-30 07:10:49 【问题描述】:我的代码需要帮助。我已经通读了好几遍代码,没有发现任何问题。 用户应该提交工作申请并将用户重定向到仪表板,但它没有提交工作申请,也没有将用户引导到仪表板。 这是我的代码: mode.py
from django.db import models
from django.contrib.auth.models import User
class Job(models.Model):
title = models.CharField(max_length=255)
short_description = models.TextField()
long_description = models.TextField(blank=True, null=True)
created_by = models.ForeignKey(User, related_name='jobs', on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
changed_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
class Application(models.Model):
job = models.ForeignKey(Job, related_name='applications', on_delete=models.CASCADE)
content = models.TextField()
experience = models.TextField()
created_by = models.ForeignKey(User, related_name='applications', on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
Views.py
from django.shortcuts import render, redirect
从 django.contrib.auth.decorators 导入 login_required
从 .forms 导入 AddJobForm, ApplicationForm 从 .models 导入工作
def job_detail(request, job_id): 工作 = Job.objects.get(pk=job_id) return render(request, 'jobs/job_detail.html', 'job': job)
@login_required def add_job(请求): 如果 request.method == 'POST': form = AddJobForm(request.POST)
if form.is_valid():
job = form.save(commit=False)
job.created_by = request.user
job.save()
return redirect('dashboard')
else:
form = AddJobForm()
return render(request, 'jobs/add_job.html', 'form': form)
@login_required def apply_for_job(请求,job_id): 工作 = Job.objects.get(pk=job_id)
if request.method == 'POST':
form = ApplicationForm(request.POST)
if form.is_valid():
application = form.save(commit=False)
application.job = job
application.created_by = request.user
application.save()
#create_notification(request, job.created_by, 'application', extra_id=application.id)
return redirect('dashboard')
else:
form = ApplicationForm()
return render(request, 'jobs/apply_for_job.html', 'form': form, 'job': job)
forms.py
from django import forms
从 .models 导入作业、应用程序
类 AddJobForm(forms.ModelForm): 元类: 型号 = 工作 字段 = ['title','short_description','long_description']
类 ApplicationForm(forms.ModelForm): 元类: 型号 = 应用 fields = ['内容', '经验']
apply_for_job.html
% extends 'core/base.html' %
% 块内容 % 申请工作 - job.title
<form method="post" action=".">
% csrf_token %
% if form.errors %
% for error in form.errors %
<div class="notification is-danger">
error
</div>
% endfor %
% endif %
<div class="field">
<label>Content</label>
<div class="control">
<textarea class="textarea" name="content" id="id_content"></textarea>
</div>
</div>
<div class="field">
<label>Experience</label>
<div class="control">
<textarea class="textarea" name="experience" id="id_experience"></textarea>
</div>
</div>
<div class="field">
<div class="control">
<button class="button is-success">Submit</button>
</div>
</div>
</form>
% 端块 %
我的代码有什么问题?
【问题讨论】:
很难准确判断问题出在哪里,但您的申请表肯定没有通过验证。如果您随时对模型进行了任何更改,请从您的数据库中确认所有更改都已生效。否则,您可能需要删除所有迁移文件、删除数据库、进行迁移、迁移并重新创建超级用户,然后重试。 您还应该在验证之前将申请表中的数据打印到控制台,这样您就可以查看是否有任何表单字段发送了无效数据。 您是否尝试打印出表单错误? 【参考方案1】:这一行的错误
<form method="post" action=".">
只需删除该点,它应该可以工作,
<form method="post" action="">
【讨论】:
以上是关于Django表单用户表单未登顶的主要内容,如果未能解决你的问题,请参考以下文章
Django allauth 自定义登录表单未呈现自定义用户模型中的所有字段
Django - 当用户提交表单时,会创建表,但表之间的连接不是
django - 动态添加 django 表单字段并保留用户输入