一些杂想

一些杂想

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 网址。

转载于:https://www.cnblogs.com/weixuqin/p/9392515.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 应用是单机集群_【架构】Tomcat单机部署多应用Windows

Tomcat单机部署多应用-Windows1、添加新增的Tomcat相关环境变量CATALINA_BASE C:\tomcat1CATALINA_HOME C:\tomcat1TOMCAT_HOME C:\tomcat1CATALINA_2_BASE C:\tomcat2CATALINA_2_HOME C:\tomcat2TOMCAT_2_HOME C:\tomcat22、第一个tomcat不变3、打开第二个tomcat目录bin…

java long类型转string_JavaSE的学习——数据类型

数据类型分为基本数据类型和引用数据类型两大类在下面数据类型的介绍中只会介绍8种基本数据类型和引用数据类型中的类类型中的一个类String基本数据类型1. 计算机中的存储单位8bit 1byte 1024byte 1KB 1024KB 1M1024M 1GB1024GB 1T2. 整数型数据byte short int long1.long…

DWTagList

2019独角兽企业重金招聘Python工程师标准>>> DWTagList 根据给定的 NSArray 数组来创建标签列表&#xff0c;可自定义字体、颜色和其他属性。 转载:http://www.adobex.com/ios/source/details/00000820.htm 转载于:https://my.oschina.net/u/868244/blog/106245

全国计算机等级考试题库二级C操作题100套(第36套)

第36套&#xff1a; 给定程序中,函数fun的功能是:统计出带有头结点的单向链表中结点的个数, 存放在形参n所指的存储单元中。 请在程序的下划线处填入正确的内容并把下划线删除&#xff0c;使程序得出正确的结果。 注意&#xff1a;源程序存放在考生文件夹下的BLANK1.C中。 不得…

爬虫(爬虫原理与数据抓取)

通用爬虫和聚焦爬虫 根据使用场景&#xff0c;网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用爬虫 通用网络爬虫 是 捜索引擎抓取系统&#xff08;Baidu、Google、Yahoo等&#xff09;的重要组成部分。主要目的是将互联网上的网页下载到本地&#xff0c;形成一个互联网内容的…

java 注解数组初始化_Java 之 注解的定义

一、元注解1、元注解概述元注解&#xff1a;用于描述注解的注解2、常用的元注解(1)Target&#xff1a;描述注解能够作用的位置Target 里面是一个 ElementType[] value() 的枚举数组&#xff0c;这个数组里面指定了10个常量对象。源码&#xff1a;1 public enumElementType {2 /…

python is beautiful_Python list 和 str 互转

一、list转字符串 命令&#xff1a;.join(list) 其中&#xff0c;引号中是字符之间的分割符&#xff0c;如“,”&#xff0c;“;”&#xff0c;“\t”等等 如&#xff1a; list [1, 2, 3, 4, 5] .join(list) 结果即为&#xff1a;12345 ,.join(list) 结果即为&#xff1a;1,2,…

SQL Server Insert 操作效率(堆表 VS 聚集索引表)

“SQL Server的Insert操作在堆表或者聚集索引表的时候&#xff0c;哪个效率更高&#xff1f;为什么高&#xff1f;” 之前有同事问过我这个问题&#xff0c;为了确保日志库的记录效率&#xff0c;于是我做了简单测试了&#xff0c;首先要先强调几点概念&#xff1a; 堆表&#…

React 回忆录(三)使用 React 渲染界面

Hi 各位&#xff0c;欢迎来到 React 回忆录&#xff01;? 在上一章中&#xff0c;我介绍了 React 框架的“五大特点”&#xff1a;虚拟DOM&#xff0c;组件化&#xff0c;声明式代码&#xff0c;单向数据流和纯粹的 JavaScript 语法。在本章中&#xff0c;我们将谈到 React 是…

linux java javac版本_linux下java 和 javac version 不一致问题

centos下我新安装了个jdk1.7的版本 &#xff0c;vi profile 之后 java -version 是新版本&#xff0c;想在看看javac -version 发现还是1.6的之前安装了1.6的 那好咱就卸载他查找Java 版本信息rpm -qa|grep java返回如下信息 xorg-x11-drv-savage-2.1.1-5.fc6avahi-glib-0.6.16…

electron 打包_Vue3+Electron整合方式

教程源码&#xff1a;nofacer/vue3-electron​github.com之前写过一篇文章Vue结合Electron构建跨平台应用&#xff08;TDD&#xff09;。当时的方法后来发现了一个问题&#xff0c;就是打包后的应用拿到其他机子上没法用&#xff0c;原因在于index.html的地址是个绝对路径&…

全国计算机等级考试题库二级C操作题100套(第37套)

第37套&#xff1a; 给定程序中&#xff0c;函数fun的功能是:在形参ss所指字符串数组中&#xff0c;查找含有形参substr所指子串的所有字符串并输出&#xff0c;若没找到则输出相应信息。ss所指字符串数组中共有N个字符串&#xff0c;且串长小于M。程序中库函数strstr(s1, s2)…

ABAP编程中对内表的定义,后面接一个OCCURS (n)是代表什么意思。

对内表的定义&#xff0c;我只说下有没occurs的区别。**DATA: BEGIN OF itab OCCURS 0,* matnr LIKE mara-matnr,* maktx LIKE makt-maktx,* END OF itab.**SELECT * FROM makt INTO CORRESPONDING FIELDS OF TABLE itab .**LOOP AT itab.* WRITE:/* itab-matnr,* itab-m…

Linux按照时间顺序列出文件

按照递增时间顺序列出所有文件 ls -ltr -l表示列出长串数据&#xff0c;-t表示按照时间顺序&#xff0c;-r表示将排序的结果反向输出 按照时间递减的顺序列出所有文件 ls -lt 转载于:https://www.cnblogs.com/yongjieShi/p/9395932.html

java释放list_Java中List集合中subList的坑

参考博主http://blog.csdn.net/xuweilinjijis/article/details/9037635先看List接口subList方法的javadocThe returned list is backed by this list, so non-structural* changes in the returned list are reflected in this list, and vice-versa.* The returned list suppo…

全国计算机等级考试题库二级C操作题100套(第38套)

第38套&#xff1a; 函数fun的功能是&#xff1a;把形参a所指数组中的奇数按原顺序依次存放到a[0]、 a[1]、a[2]、……中&#xff0c;把偶数从数组中删除&#xff0c;奇数个数通过函数值返回。例如&#xff1a;若a所指数组中的数据最初排列为&#xff1a;9、1、4、2、3、6、5、…

RestKit

2019独角兽企业重金招聘Python工程师标准>>> Restkit 是一个开源的 objective-c 框架&#xff0c;允许在 iOS 和 Mac OS X 的 Objective-C 中与 RESTful Web 服务进行交互&#xff0c;包含简单的 HTTP request/response API &#xff0c;带有强大的对象映射系统用于…

全国计算机等级考试题库二级C操作题100套(第39套)

第39套&#xff1a; 给定程序中&#xff0c;函数fun的功能是:在形参ss所指字符串数组中&#xff0c;删除所有串长超过k的字符串&#xff0c;函数返回所剩字符串的个数。ss所指字符串数组中共有N个字符串&#xff0c;且串长小于M。 请在程序的下划线处填入正确的内容并把下划线…

java判断是否包含张三_c# 数组 字符串 C#中判断字符串中包含某个字符

Nodejs windows的安装0.下载地址: http://nodejs-org.qiniudn.com/ https://nodejs.org/download/ https://nodejs.org/en/ 1.基本就是一路N ...跨平台网络抓包工具-Microsoft Message AnalyzerMicrosoft Message Analyzer (MMA 2013)是微软最受欢迎的Netmon的最新版本. 在Netm…