项目笔记(Django)


上传文件那些事儿

怎么在前端页面上展现上传的图片

一、在settings.py 中添加配置

  # Django用户上传的都叫media文件
  MEDIA_URL = "/media/"
  # media配置,用户上传的文件都默认放在这个文件夹下
  MEDIA_ROOT = os.path.join(BASE_DIR, "media")

二、在urls.py 中添加配置

from django.conf import settings
  # media相关的路由设置
  url(r'^media/(?P<path>.*)$', serve, {"document_root": settings.MEDIA_ROOT})

 

上传文件那些事儿..(二)

怎么上传图片,并传到数据库

一、前端页面

<div class="form-group">
<label
class="col-sm-2 control-label">头像</label>
<div class="col-sm-8">
<label for="id_avatar"><img id="avatar-img" src="/static/img/default.png" alt=""></label>
<input accept="image/*" type="file" name="avatar" id="id_avatar" style="display: none">
<span class="help-block"></span>
</div>
</div>

二、数据模型

avatar = models.FileField(upload_to="avatars/", default="avatars/default.png", verbose_name="头像")

三、form表单

四、views视图

if form_obj.is_valid():
# 校验通过,去数据库创建一个新的用户
avatar_img = request.FILES.get("avatar")
models.UserInfo.objects.create_user(**form_obj.cleaned_data, avatar=avatar_img)

 

Form那些事儿

常用字段与插件

创建Form类时,单选框的那些该注意的事

 

关于choice的注意事项:

在使用选择标签时,需要注意choices的选项可以从数据库中获取,但是由于是静态字段 ***获取的值无法实时更新***,那么需要自定义构造方法从而达到此目的。

方式一:

 
from django.forms import Form
from django.forms import widgets
from django.forms import fields
class RegForm(forms.Form):
city = forms.ChoiceField(
choices=models.City.objects.all().values_list("id", "name"),
label="城市",
initial=1,
widget=forms.widgets.Select
)
# 实时更新(重写父类的init方法)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["city"].widget.choices = models.City.objects.all().values_list("id", "name")

方式二:

 
from django import forms
from django.forms import fields
from django.forms import models as form_model

 
class FInfo(forms.Form):
  authors = form_model.ModelMultipleChoiceField(queryset=models.NNewType.objects.all()) # 多选  
  street = forms.ModelChoiceField(queryset=Street.objects.all(),empty_label='管理街道') # 单选
 
posted @ 2018-11-11 17:25  黑墨罗少  阅读(127)  评论(0)    收藏  举报