django进阶

Posted wyb666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django进阶相关的知识,希望对你有一定的参考价值。

1.模板内容复习

2.FBV及CBV及上传文件

 

django基础:https://www.cnblogs.com/wyb666/p/9464983.html

 

 

 

1.模板内容复习

(1)母版和继承

1 什么时候用母版?
2 html页面有重复的代码,把它们提取出来放到一个单独的html文件(比如:导航条和左侧菜单)
3 
4 子页面如何使用母版?
5 {% extends base.html %} --> 必须要放在子页面的第一行
6 母版里面定义block(块),子页面使用block(块)去替换母版中同名的块

 

(2)组件

1 什么时候用组件?
2 重复的代码,包装成一个独立的小html文件。
3 
4 如何使用?
5 {% include nav.html %}

 

(3)Django模板语言中关于静态文件路径的灵活写法

1 利用Django模板语言内置的static方法帮我拼接静态文件的路径:
2 {% load static %}
3 <link href="{% static ‘bootstrap/css/bootstrap.min.css‘ %}" rel="stylesheet">
4 
5 利用内置的get_static_prefix获取静态文件路径的别名,我们自行拼接路径:
6 {% load static %}
7 <link href="{% get_static_prefix %}bootstrap/css/bootstrap.min.css" rel=stylesheet>

 

(4)自定义simple_tag和自定义inclusion_tag

1 自定义的simple_tag:
2     比filter高级一点点,返回一段文本
3     它可以接受的参数个数大于2
4 
5 自定义的inclusion_tag:
6     用来返回一段html代码(示例:返回ul标签)

py文件(放在在app下面新建的templatetags 文件夹(包)):

技术分享图片

HTML:

 技术分享图片

 

 

2.FBV及CBV及上传文件

(1)什么是FBV及CBV

视图:接收请求返回响应那部分

FBV:function base view  基于函数的视图

CBV:class base view  基于类的视图

 

(2)CBV实例

views.py:

 1 # CBV实例 - 添加新的出版社
 2 class AddPublisher(View):
 3     def get(self, request):
 4         return redirect("/book/publisher_list/")
 5 
 6     def post(self, request):
 7         new_name = request.POST.get("publisher_name", None)
 8         if new_name:
 9             # 通过ORM去数据库里新建一条记录
10             models.Publisher.objects.create(name=new_name)
11         return redirect("/book/publisher_list/")

urls.py:

1 url(r^add_publisher/, views.AddPublisher.as_view()),

 

(3)上传文件

上传文件要使用到request的以下参数:

request.FILES: 包含所有上传文件的类字典对象;FILES中的每一个Key都是<input type="file" name="" />标签中name属性的值,FILES中的每一个value同时也是一个标准的python字典对象,包含下面三个Keys:

  • filename: 上传文件名,用字符串表示
  • content_type: 上传文件的Content Type
  • content: 上传文件的原始内容

前端HTML:

1 <form action="" method="post" enctype="multipart/form-data">
2     <input type="file" name="upload-file">
3     <input type="submit" value="上传文件">
4 </form>
5 
6 注意:
7     上传文件时表单中的enctype="multipart/form-data"必须要写
8     input(file)必须要有name

views.py:

 1 def upload(request):
 2     if request.method == "POST":
 3         filename = request.FILES["upload-file"].name
 4         # 在项目目录下新建一个文件 -> 项目根目录
 5         with open(filename, "wb") as f:
 6             # 从上传的文件对象中一点一点读
 7             for chunk in request.FILES["upload-file"].chunks():
 8                 # 写入本地文件
 9                 f.write(chunk)
10         return HttpResponse("上传OK")
11     return render(request, "test/test_upload.html")

 

以上是关于django进阶的主要内容,如果未能解决你的问题,请参考以下文章

Atom编辑器入门到精通 Atom使用进阶

Django进阶

我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段

我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段

63-Django进阶(路由系统)

Django 进阶篇二