Django 注意知识点(一)
本篇概述
Django Admin后台显示 多对多字段(如何)
Django 模板 显示 多对多字段(如何)
Django 将表单中上传的多对多字段存入数据库 (如何)
Django 上传文件 (如何)
models代码背景
class Tag(models.Model):
name = models.CharField(max_length=20, verbose_name="名称") class work(models.Model):
Tag = models.ManyToManyField(Tag, verbose_name="标签")
一,Django Admin后台显示 多对多字段
于admin.py文件中
@admin.register(work)
class workAdmin(admin.ModelAdmin):
'''展示tags'''
def show_tags(self, obj):
return [tag.name for tag in obj.Tag.all()]
# 这里运用了Python的堆导式
show_tags.short_description = "标签" # 设置表头
list_display = ["show_tags"]
二,Django 模板 显示 多对多字段
先与 视图 views.py文件中
class IndexView(View):
def get(self, request):
works = work.objects.all()[:2] context = {
'works': works,
}
return render(request, 'index.html', context)
然后,(urls.py中的配置就不多说了,直接进如何在模板中取得)
{% for work in works %}
{% for tag in work.Tag.all %}
{# 下面即 该作品对应的标签 #}
{{tag.name}}
{% endfor %}
{% endfor%}
三,Django 将表单中上传的多对多字段存入数据库
1、首先获取表单中上传的多对多数据,假设 上传的 标签(多)且 标签与作品 work 的关系是 ManyToManyField
# 标签
tag = request.POST.getlist("tag")
2、创建一个 work 对象 然后 进行数据的交互
works = work()
works.save()
# 多对多字段存入
for tags in tag:
id = Tag.objects.get(name=tags).id
works.Tag.add(id)
works.save()
当然这必须是 数据库中 Tag 要有的标签名称才行,不然找不到 id 无法存入,因为 add()方法就是的参数是 id,至于非标签已有存入 有待 摸索~~
四,Django上传文件,如何
1. 首先与 settings.py文件中增添
# 上传文件 MEDIA_ROOT = os.path.join(BASE_DIR, r'static\upfile')
2、于 模板 表单中 添加 input:file + tap 。。。
<input type="file" name="file">
3、修改 form 表单属性
method="post" 方法必须是 post
enctype="multipart/form-data" 上传文件必备
4、与视图Views.py文件中
# 这里 Django视图函数,我用的基于类的视图
# 例如 class AddView(View)
# 在其中
def post(self, request):
try:
f = request.FILES["file"]
# 合成文件在服务器端的路径
filePaths = "static/upfile/" + f.name # 这里的原因:如果是在分页中,文件路径会额外添加如 /page_id/ 导致后面调用失败,根据个人情况进行合理调整
filePath = os.path.join(settings.MEDIA_ROOT, f.name)
print(filePath)
with open(filePath, 'wb') as fp:
# 以文件流的形式一段段上传
for info in f.chunks():
fp.write(info)
except:
return HttpResponse("上传失败")
5、然后 进行上传,大功告成 ~~
Django 注意知识点(一)的更多相关文章
- 关于Django查询知识点总结
========关于Django查询知识点总结======= models.Book.objects.filter(**kwargs): querySet [obj1,obj2] models.Boo ...
- Django项目知识点汇总
目录 一.wsgi接口 二.中间件 三.URL路由系统 四.Template模板 五.Views视图 六.Model&ORM 七.Admin相关 八.Http协议 九.COOKIE 与 SES ...
- Django补充知识点——用户管理
内容概要 1.Form表单2.Ajax3.布局,Django母板4.序列化5.Ajax相关6.分页7.XSS攻击8.CSRF9.CBV.FBV 10.类中用装饰器的两种方法 11.上传文件 12.数据 ...
- django 之知识点总结以及Form组件
一.model常用操作 1.13个API查询:all,filter,get ,values,values_list,distinct,order_by ,reverse , exclude(排除),c ...
- day64 django django零碎知识点整理
本文转载自紫金葫芦,哪吒,liwenzhou.cnblog博客地址 简单了解mvc框架和MTV框架, mvc是一种简单的软件架构模式: m----model,模型 v---view,视图 c---co ...
- Django框架知识点整理
1.安装django, pip install django 或者是通过 “==”符号指定版本号. 2.创建一个Django项目: django-admin createproject project ...
- [django]drf知识点梳理-权限
用户 - 权限 - 资源 (拥有) (绑定) django权限机制能够约束用户行为,控制页面的显示内容,也能使API更加安全和灵活:用好权限机制,能让系统更加强大和健壮 django权限控制 Djan ...
- [django]drf知识点梳理-搜索
什么是搜索? 譬如http://127.0.0.1:8000/User/?username=maotai-0 可以检索出想要的. 自己实现原始的搜索 重写下get_queryset方法 class U ...
- [django]drf知识点梳理-分页
msyql分页 limit offset https://www.cnblogs.com/iiiiiher/articles/8846194.html django自己实现分页 https://www ...
- Django小知识点整理
一.Django中Choices字段显示中文的两种方式 1.get_xxxx_display():这种方式只能针对对象来使用 {% for row in server_list %} <li&g ...
随机推荐
- sshfs 相关材料索引
这两天简单看了 sshfs 缓存相关的内容,下面对一些好的链接进行索引,防止以后忘了: OpenSSH: Difference between internal-sftp and sftp-serve ...
- Caffeine批量加载浅析
最近项目中的本地缓存,看是从Guava改成了Caffeine,据说是性能更好,既然性能更好的话,那么就用起来吧.不过在使用过程中,发现了单个load和批量loadall方面的一些小设置,记录一下. 一 ...
- Maven项目使用mybatis报错 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
maven项目使用mybatis时,找不到mapper文件(.xml) 错误信息提示: 项目可以正常运行,但是在有请求到达服务器时(有访问数据库的请求),会出现报错!! 错误原因: mybatis没有 ...
- vue学习笔记(十)路由
前言 在上一篇博客vue学习笔记(九)vue-cli中的组件通信内容中,我们学习组件通信的相关内容和进行了一些组件通信的小练习,相信大家已经掌握了vue-cli中的组件通信,而本篇博客将会带你更上一层 ...
- 自学Java编程,如何混到一个7k薪资实习生的岗位
现在Java软件开发的专业一直都是热门,有很多专业的学生,比如电子.机械.会计.土木等等专业由于专业本身没有更高的提升空间,所以现在的年轻人更加喜欢做一些科技前沿的工作,毕竟现在接触的都是电子产品.而 ...
- C# ThreadPool 线程池
Thread与ThreadPool Thread: .NetFramework1.0 对线程对象的一个封装 Thread方法很多很强大,但是太过强大,而且没有限制 功能繁多,反而用不好--就像给4岁 ...
- Oracle VirtualBox安装CentOS 8
1.下载CentOS CentOS下载地址: https://wiki.centos.org/Download 这里以CentOS8为例 选择一个比较快的地址,这里以jdcloud mirror为例 ...
- SpringBoot中使用Zuul
Zuul提供了服务网关的功能,可以实现负载均衡.反向代理.动态路由.请求转发等功能.Zuul大部分功能是通过过滤器实现的,除了标准的四种过滤器类型,还支持自定义过滤器. 使用@EnableZuulPr ...
- sqlserver默认隔离级别下并发批量update同一张表引起的死锁
提到死锁,最最常规的场景之一是Session1 以排它锁的方式锁定A表,请求B表,session2以排它锁的方式锁定B表,请求A表之类的,访问顺序不一致导致死锁的情况本文通过简化,测试这样一种稍显特殊 ...
- sql server一些快捷方式和操作技巧
1.注释(ctrl+k+c) 和 取消注释(ctrl+k+u) 2.行号显示,如图: