一些杂想

一些杂想

Django 笔记

(目前个人认为,Django 还是应该使用 Django1.11版本,稳定长期支持到2020年,兼容性也好。)

Django MTV 构架下的网站开发步骤:

  1. 使用 virtualenv 创建并启用虚拟机环境。
  2. 使用 pip install 安装 Django1.11。
  3. 使用django-admin startproject 创建项目。
  4. 使用python manage.py startapp 创建 app。
  5. 创建 templates 文件夹,并把所有网页模板(.html)文件都放在此文件夹中。
  6. 创建 static 文件夹,并把所有静态文件(图像文件、.css 文件以及.js 等)都放在此文件夹中。
  7. 修改setting.py,把相关文件夹设置都加入,也把生成的 app 名称加入INSTALLED_APPS 序列中。
  8. 编辑 models.py,创建数据库表格。
  9. 编辑 views.py, 先 import 在 models.py 中创建的数据模型。
  10. 编辑 admin.py,把 models.py 中定义的数据模型加入,并使用 admin.site.register 注册新的类,让 admin 界面可以处理数据库内容。
  11. 编辑views.py, 设计处理数据的相关模块,输入和输出都通过 templates 相关的模块操作获取来自于网页的输入数据,以及显示.html 文件的网页内容。
  12. 编辑urls.py, 先 iimport 在 views.py 中定义的模块。
  13. 编辑 urls.py,创建网址和 views.py 中定义的模块的对应关系。
  14. 执行 python manage.py makemigrations
  15. 执行 python manage.py migrate
  16. 执行 python manage.py runserver 测试网站。

templates 模板的标准步骤:

  1. 找到使用的模板,如果没有,就建立一个,存放在 templates 文件夹下。
  2. 在 views.py 的处理函数中查询,计算并准备数据,把要显示在网页上的数据使用字典格式编排好。
  3. 使用 get_template 函数取得要使用的模板的执行实例 instance,一般会直接命名为 template。
  4. 通过 template 把变量以字典类型的形式传入,渲染成一个字符串 html。
  5. 把 html 通过 HTTPResponse 传送给服务器。

在 template 中使用 static 文件

  • 在 setting.py 中,设置 STATIC_URL 使用的网址,例如 STATIC_URL=‘/static’,也就是指定在网址中以/static/开头的网址就视为要对静态文件进行读取。
  • 在setting.py 中设置 STATICFILES_DIRS,这是设置静态文件真正要存放的文件位置。一般而言都会放在网站目录下的 static 文件夹中,所以都会以os.path.join(BASE_DIR, ‘static’)进行设置。
  • 在 template 文件中使用静态文件的专用加载模式。
  • forloop.counter()是用来显示当前是第几个循环的一个计数器,forloop.counter()是从0开始计数的,而forloop.counter()是从0开始的。
  • 模板中使用 { % url “account_signup” % } 这样的标签来自动产生相对应的网址。
  • 要在网站中建立自定义标签,就要在网站 App 目录下创建一个 templates 文件夹,然后把要创建这些自定义标签的函数放在这个文件夹想,自己命名一个文件,同时为了要让这个文件夹可以被 Python 视为一个可导入的模块,在同一个文件夹下还要创建一个 __init__.py 文件。

使用 models:

  • 定义类,参数导入 models.Model,然后就可以使用 models.* 来指定数据表中每一个字段的特征。
  • 首次设置 model 的内容要先执行 makemigrations 的指令以及 migrate 指令。执行后系统就会把我们设置的NewTable 数据表建立到数据库中,可以在 setting.py 中修改数据库类型。
  • 编辑 models.py 后,一定要再执行migrate 才行(如果中间修改过,就需要先执行 makemigrations )。这两个指令要求套用最新的数据表的新增或修正的内容)即先执行 makemigrations ,再执行 migrate 。
  • 通过 python manage.py shell 进入 Python shell 。
  • 在Python 3中,数字上不允许使用前导零, 数字前面写0将表示8进制。
  • mysite/migrations 的文件夹下有所有做过 makemigrations 的记录,可以很容易地从这些文件的编号中看出变更的顺序以及在每一个阶段中变更的内容。如果有必要,可以直接修改这些内容,然后执行一次 python manage.py makemigrationsmigrate 就可以反映出修改后的数据表结构。当然,如果不小心把所有内容都改乱了,那么把这个文件夹中除了__init__.py 文件外的所有文件都删除,并删除上一层目录中的 db.sqlite3 数据库文件,等于是所有数据库内容全部重置,重新来过了。

站点引用Bootstrap插件的方式有两种:

  • 单独引用:使用 Bootstrap 的个别的 *.js 文件。一些插件和 CSS 组件依赖于其他插件。如果您单独引用插件,请先确保弄清这些插件之间的依赖关系。
  • 编译(同时)引用:使用 bootstrap.js 或压缩版的 bootstrap.min.js。
  • 不要尝试同时引用这两个文件,因为 bootstrap.js 和 bootstrap.min.js 都包含了所有的插件。
  • 所有的插件依赖于 jQuery。所以必须在插件文件之前引用 jQuery。
  • 使用 bootstrap 建议直接使用 CDN 链接的方式。放在<head></head>之间即可。一般是放在</head>这一行的前面。 jQuery 的 CDN 链接代码放在</body>之前即可。

提交 post 请求时,会报:禁止访问 (403),CSRF验证失败,请求被中断错误。

这是 Django 为了防范网站 CSRF (Cross-site request forgery,跨站请求伪造) 攻击的机制, 以确保黑客无法伪装为已验证过的浏览器而盗取数据。启用这个功能(默认是启用的)的设置在 setting.py 中的 'django.middleware.csrf.CsrfViewMiddleware'(在 MIDDLEWARE中的设置区块中)。

我们在加载的 html文件提交表单的 <form>标签下加上标识符: {% csrf_token %} 同时在 views.py 文件中定义的函数修改 render 方法,实例如下:

  • post请求:

def posting(request): template = get_template('posting.html') moods = models.Mood.objects.all() message = '如果要张贴信息,那么每一个字段都要填...' html = template.render(context=locals(), request=request) return HttpResponse(html)

  • get 请求:

def listing(request): template = get_template('listing.html') html = template.render(locals()) return HttpResponse(html)

验证机制

decorator@login_required 是 auth 验证机制提供的一个非常方便的用法,用来告诉 Django 接下来的处理函数内容是需要登录过后才能够浏览的,如果还没有登录就想要执行这一操作,请先登录括号中指定的 login_url 网址。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏后端技术探索

关于PHP脚本和浏览器连接深入解析

当 PHP 脚本正常地运行 NORMAL 状态时,连接为有效。当远程客户端中断连接时,ABORTED 状态的标记将会被打开。远程客户端连接的中断通常是由用户点击...

2061
来自专栏我的博客

Sed详解

1、说明 sed 一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令...

32410
来自专栏容器云生态

根据红帽RHEL7官方文档对centos7进行技术剖析(一)

序言:红帽7教学环境介绍 rht-vmctl命令介绍; $ rht-vmctl start desktop     启动desktop虚拟机 $ rht-vmc...

3216
来自专栏FreeBuf

VOOKI:一款免费的Web应用漏洞扫描工具

Vooki是一款免费且用户界面友好的Web应用漏扫工具,它可以轻松地为你扫描任何Web应用并查找漏洞。Vooki主要包括三个部分,Web应用扫描器,Rest A...

2453
来自专栏企鹅号快讯

Linux系统下常用的数据备份方法

Linux作为网络操作系统,在服务器方面的应用越来越广泛。作为专门的网络服务器,一个重要功能就是对服务器数据进行备份,以确保数据的安全。本文将介绍在Linux系...

2288
来自专栏進无尽的文章

基础篇-Mac终端指令大全

在日常开发中我们经常会用到一些Mac的指令在终端中进行操作,所以了解和熟练使用一些基本的Mac终端指令是非常有必要的,也有利于自己的职业发展,下面就简单总结下M...

1241
来自专栏技术博客

Google免费的SVN服务器管理VS2010代码

Google免费为我们提供了代码管理的SVN服务器。首先我这里用的Win7 64的电脑系统,用VS2010进行的代码开发。这里管理代码需要以下准备(现在用的都是...

2501
来自专栏玄魂工作室

Python黑帽编程1.2 基于VS Code构建Python开发环境

0.1 本系列教程说明 本系列教程,采用的大纲母本为《Understanding Network Hacks Attack and Defense with ...

3037
来自专栏互扯程序

玩转linux 这些命令就够了

现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。

1912
来自专栏建站达人秀

如何搭建 Django 网站

Django是一个非常受欢迎的全功能服务器端Python Web框架,可以快速开发安全和可维护的网站。由经验丰富的开发人员构建。Django负责处理Web开发大...

8145

扫码关注云+社区

领取腾讯云代金券