django - 表单内容在 Django 主页上不可见?
问题描述
我正在尝试学习 django 并尝试创建一个简历生成器项目,用户可以通过在表单上输入一些详细信息来获取基于表单的模板,但该表单在主页上不可见。我正在附加模板代码以获得更多参考。我只能在主页上看到提交按钮
{% extends 'base.html' %}
{% block content %}
<form method="post" action="post-form">
{% csrf_token %}
<p>
{{form.as_p}}
</p>
<input type="submit" value="Save" />
</form>
{% endblock %}
表格.py
from .models import Person,Experiences,EducationDetails,Academics,Skills,AreaOfInterest
class PersonForm(forms.ModelForm):
class Meta:
model=Person
fields=('first_name','last_name','gender','email','contact_no','website','github','linkedin')
widgets={
'first_name': forms.TextInput(attrs={'title':'First Name'}),
'last_name': forms.TextInput(attrs={'title':'Last Name'}),
'gender': forms.RadioSelect(attrs={'title':'Gender'}),
'email': forms.EmailInput(attrs={'title':'Email'}),
'github': forms.URLInput(attrs={'title':'Github'}),
'linkedin': forms.URLInput(attrs={'title':'Linkedin'}),
'website': forms.URLInput(attrs={'title':'Website'})
}
class ExperienceForm(forms.ModelForm):
class Meta:
model = Experiences
fields = ('work_choice','title','start_duration','end_duration','description')
widgets = {
'work_choices' : forms.Select(attrs={'title':'WorkChoice'}),
'title' : forms.TextInput(attrs={'title':'Title'}),
'start_duration' : forms.DateInput(attrs={'title':'Start duration'}),
'End_duration' : forms.DateInput(attrs={'title':'End duration'}),
'description' : forms.Textarea(attrs={'title':'Description'})
}
class EducationForm(forms.ModelForm):
class Meta:
model = EducationDetails
fields = ('degree_choice','stream','passing_year','gpa')
widgets = {
'degree_choice' : forms.Select(attrs={'title':'Degree'}),
'stream' : forms.TextInput(attrs={'title':'Stream'}),
'passing_year' : forms.DateInput(attrs={'title':'Passing Year'}),
'gpa' : forms.TextInput(attrs={'title':'GPA'})
}
class SkillsForm(forms.ModelForm):
class Meta:
model = Skills
fields = ('skills_description',)
widgets = {
'skills_description': forms.Textarea(attrs={'title': 'Professional Skills'})
}
class AcademicsForm(forms.ModelForm):
class Meta:
model = Academics
fields = ('academics_description',)
widgets = {
'academics_description': forms.Textarea(attrs={'title': 'Academics'})
}
class AreaOfInterestForm(forms.ModelForm):
class Meta:
model = AreaOfInterest
fields = ('area_of_interest_detail',)
widgets = {
'area_of_interest_detail': forms.Textarea(attrs={'title': 'Area Of Interest'})
}
视图.py
from django.shortcuts import render
from django.http import HttpResponse
#from django.shortcuts import render_to_response
from django.contrib.sites.requests import RequestSite
from .forms import PersonForm,ExperienceForm,AcademicsForm,AreaOfInterestForm,EducationForm,SkillsForm
from .models import Person,Experiences,EducationDetails,Academics,Skills,AreaOfInterest
def resumeFill(request):
template_name = 'resumefill.html'
if request.method == "POST":
personform = PersonForm(data=request.POST)
educationform = EducationForm(data=request.POST)
experienceform = ExperienceForm(data=request.POST)
academicsform = AcademicsForm(data=request.POST)
areaOfInterestform = AreaOfInterestForm(data=request.POST)
skillsform = SkillsForm(data=request.POST)
if personform.is_valid():
perform.save()
if educationform.is_valid():
educationform.save()
if experienceform.is_valid():
experienceform.save()
if academicsform.is_valid():
academicsform.save()
if areaOfInterestform.is_valid():
areaOfInterestform.save()
if skillsform.is_valid():
skillsform.save()
return render(request,template_name,{'personform':PersonForm(),'educationform':EducationForm(),'experienceform':ExperienceForm(),'academicsform':AcademicsForm(),'areaOfInterestform':AreaOfInterestForm(),'skillsform':SkillsForm(),})
def resumeView(request):
template_name = 'resume_view.html'
site_name = RequestSite(request).domain
person = Person.objects.all()
experience = Experiences.objects.all()
education = EducationDetails.objects.all()
academics = Academics.objects.all()
skills = Skills.objects.all()
areaOfInterest = AreaOfInterest.objects.all()
return render(request,template_name,{'site_name':site_name,'person':person,'experience':experience,'education':education,'academics':academics,'skills':skills,'areaOfInterest':areaOfInterest,})
模型.py
from django.contrib.auth.models import User
#from phonenumber_field.modelfields import PhoneNumberField
# Create your models here.
class Person(models.Model):
GENDER_CHOICES = (('M','Male'),
('F','Female'),
('Others', 'Trans'))
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200,null=True)
gender = models.CharField(choices=GENDER_CHOICES,max_length=10)
age = models.IntegerField()
email = models.EmailField()
contact_no = models.CharField(unique=True,null=False,max_length=13)
website = models.URLField()
github = models.URLField()
linkedin = models.URLField()
def full_name(self):
return " ".join([self.first_name+self.last_name])
class Experiences(models.Model):
WORK_CHOICES = (
('I','Internship'),
('FTE','Full Time Employee'),
('Free','Freelancer'))
person = models.ForeignKey(Person, on_delete=models.CASCADE)
work_choice = models.CharField(choices=WORK_CHOICES,max_length=20)
title = models.CharField(max_length=200)
start_duration = models.DateField()
end_duration = models.DateField()
description = models.TextField()
class EducationDetails(models.Model):
DEGREE_CHOICES = (('XII','High School'),
('B.Tech/B.E./BCA/B.Com','Bachelors'),
('M.Tech/MCA/M.Com','Masters'))
person = models.ForeignKey(Person,on_delete=models.CASCADE)
degree_choice = models.CharField(choices=DEGREE_CHOICES, max_length=300)
stream = models.TextField(max_length=200,null=True)
passing_year = models.DateField()
gpa = models.IntegerField()
class Academics(models.Model):
person = models.ForeignKey(Person,on_delete=models.CASCADE)
academics_description = models.TextField()
class Skills(models.Model):
person = models.ForeignKey(Person,on_delete=models.CASCADE)
skills_description = models.TextField()
class AreaOfInterest(models.Model):
person = models.ForeignKey(Person,on_delete=models.CASCADE)
area_of_interest_detail = models.TextField()
网址.py
from . import views
from django.conf.urls import url
from django.urls import path
urlpatterns = [
url(r'^resumefill',views.resumeFill,name='resumefill'),
url(r'^resumeview',views.resumeView,name='resumeview'),
]
项目结构的urls.py
from django.contrib import admin
from django.urls import path,include
from django.conf.urls import url
urlpatterns = [
path('admin/', admin.site.urls),
path(r'',include('portfolio.urls')),
]
解决方案
您不会将form
变量传递给模板,而是可以使用{{personform.as_p}}
or{{educationform.as_p}}
等。
确保您在模板上使用的变量与您从 views.py 上的“返回渲染”传递的变量相同
推荐阅读
- .htaccess - 如何将/的索引重定向到网站?
- git - 推送到新分支会在 GitHub 上引发 403 错误
- javascript - 苗条的包应该是依赖项还是 devDependency?
- ios - SwiftUI 导航返回到特定视图
- json - 使用 cubePosition 数据编写 JSON 文件以生成 10x10x10 立方体
- spring-boot - @Value lateinit var 仅在从测试调用时才被实例化
- python - Python:当多列具有相同的值时,将最后一列替换为null
- javascript - 选择属性不会在 CKEditor5 中返回完整信息
- reactjs - Ant设计表树,在每个孩子中动态更改expandIconColumnIndex值
- css - 如何使用来自节点模块的css来优先考虑css的顺序?