Djongo反向生成Web表单,页面文件上传,调用静态文件资源

来源:互联网 发布:mac book怎么样 编辑:程序博客网 时间:2024/06/08 06:41

Djongo反向生成文表单
新建一个forms.py的文件:
这里面写反向生成表单的内容:
Djongo的反向生成表单是靠Djongo的一个forms模块,所以我们要导这个模块。

from django import formsfrom school.models import *class mydate():    passclass CanCatForm(forms.Form):   #创建一个类     tel = forms.CharField(label="电话",max_length=20) #这是一个文本框 label属性是的文本解释,max_length是这个文本框的最大长度。    QQ = forms.CharField(label="QQ号",max_length=50)    Email = forms.EmailField(label="邮箱",max_length=50)    isForeign = forms.BooleanField(label="户籍",initial=True)   #复选按钮  initial 是否    likes =forms.ChoiceField(label= "爱好",choices=(("体育","体育"),("音乐","音乐"),("画画","画画")),widget=forms.CheckboxSelectMultiple)    roleName = forms.ChoiceField(choices=(("群众","群众"),("政治家","政治家")),widget=forms.RadioSelect)    city = likes =forms.ChoiceField(label= "城市",choices=(("北京","北京"),("纽约","纽约"),("莫斯科","莫斯科")))    date = forms.DateField(label="注册时间",widget=forms.DateInput)    img = forms.FileField(label="头像")class studentForm(forms.ModelForm):    student_sex=(        ('男','男'),        ('女','女'),    )    student_likes =(        ('游泳','游泳'),        ('打篮球','打篮球'),    )    #name = forms.CharField(label="姓名")    sex = forms.ChoiceField(label="性别", choices=student_sex,widget=forms.RadioSelect)    likes = forms.MultipleChoiceField(label="爱好",choices=student_likes,widget=forms.CheckboxSelectMultiple)    class Meta:        model = Student        fields = '__all__' #['name','age','sex','grade']

这样我们就不用自己在html中画表单了,只要把表单对象传过去就可以在html中使用,同时还提供了许多便利的方法操作相关联的实力类。
比如is_valid()方法就是验证表单是否合法,.save()方法可以直接把数据保存到数据库。
文件上传

  form.FileField() #用于手动编写  model.FileFileld(upload_to ='' )#用在自动保存上传文件

首先进行上传路径的设置
settings.py:

MEDIA_ROOT = os.path.join(BASE_DIR, 'upload') #文件路径不是绝对路径是项目路径MEDIA_URL = '/upload/'  

配置urls.py:

urlpatterns = [    url(r'^admin/', admin.site.urls),] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) #<--

我们在创建表单对象的时候代码从#1变成#2

form = StudentForm(request.POST)#1form = StudentForm(request.POST, request.FILES)#2

表单设置

<form action="addStudent2" method="post" ENCTYPE="multipart/form-data">

models设置

  imgPath = models.FileField(verbose_name='头像', null=True, upload_to='student')

这样我们就可以进行文件上传,表单模型的.save()可以直接进行保存,把文件保存到指定路径,把地址保存到数据库

 if form.is_valid():                form.save()                print(stu.imgPath)

Django 静态资源
配置静态文件
我们在web开发中要用到CSS等文件,在Django中要想调用这些文件,就需要配置一个静态文件夹。
首先是settings.py:

STATICFILE_DIR=(    os.path.join(BASE_DIR, 'static'))STATIC_URL = '/static/'

然后是urls.py

urlpatterns = [    url(r'^admin/', admin.site.urls),] + static(settings.STATIC_URL, document_root=settings.STATICFILE_DIR)

配置静态文件和文件上传路径都需要导入两个模块。

from django.conf import settingsfrom django.conf.urls.static import static
原创粉丝点击