对应github链接:https://github.com/pshyms/django/tree/master/liuyanban

第一天

1. 创建一个新项目后,新建一个应用程序
python manager.py startapp message
 
2. 在message同级目录下创建3个目录static, log, media,apps目录,
static:存放静态文件,包括js,css,图片等
log:存放网站日志文件
media:存放用户上传的图片等资源
apps: 用于应用过多时,都放于这个目录下,然后将apps目录右键mark成Source Root
 
3.  存放静态文件
将message_form.html文件放在templates文件夹下
在static目录下新建css目录,并在css目录下新建stylesheet格式的style文件,将message_form.html文件中的<style>标签内容剪切到style.css文件中,首尾<style>去掉,shift+tab使css格式整齐
 
4. 配置django连接mysql
在setting.py大概80行找到DATABASES代码段,默认是sqlites,我们修改为mysql如下,库名要事先写好
 
安装pymysql模块:pip install pymysql
python3 pymysql就是MySQLdb,基本使用方法:import pymysql as MySQLdb
 
django 中使用方法,在项目djangostart目录里的__init__.py中加入
import pymysql
pymysql.install_as_MySQLdb()
 
 
执行python manage.py migrate 首次执行,生成项目需要的一些基本数据库
 
 
 
5. 配置message_form.html页面展示出来
 
5.1 message/views.py中添加如下代码:
 
5.2 djangostart/urls.py中添加代码
 
5.3  DjangoGetStarted/settings.py 57行左右修templates代码块中的DIRS为如下,来指定模板位置
 
5.4 页面出来后,没css样式,原因是css文件没找到,这是因为在settings.py中我们只是指定了静态文件目录名
但是没指定静态文件查找的跟路径,所以还需添加如下代码
 
 
 
 
 

 第二天  ORM

 

一. models.py中定义数据库中数据名和各字段

 
1. 主键可以不定义,默认会生成一个id主键,当然也可以自定义主键,例如这里
 
注意:
1) 必须写default值
2) verbose_name相当于起一个别名,方便阅读
3)如果是字符字段,必须写最大长度
4) 定义主键要写关键字primary_key
5) null = True, blank= True表示字段可以为空。 default和blank的更改是python层面的约束 不需要迁移,因为他们不影响数据库;但是如果把default=''改为Null=True,表允许为空,虽然效果一样,但需要迁移数据库
 
 
2. 你可以在任意一个模型类中使用meta类,用来设置一些与特定模型相关的选项
    其中ordering值的类型必须是一个元组或者列表
    db_table用来自定义表名
 
 
3. 在settings.py中第40行要把应用程序的名字加到INSTALLED_APPS代码段中
 
 
 

二. django model的增删改

 
1. 先用navicat添加一条测试数据,例如
 
 
2. 在message/views.py中修改为如下
 
说明:
ORM中默认的数据管理器是objects, 常用的方法有all(),filter(),delete()
1. all()将所有数据返回成一个queryset类型,可遍历操作,如上例
2. filter()取出指定条件值,如filter_message = UserMessage.objects.filter(name='jack', address='西安'),同样可进行遍历操作
3.  删除操作很简单,比如如果只有一条数据,all_message.delete()即可,如果是多条,上图一样来个for循环。需要注意的是只有每次表单提交的时候,删除操作才能生效,因为getform函数引用了request参数。
 
 
 
3. 将数据存入数据库
 
3.1 本地数据存储
可在message/views.py的getform()函数中添加如下代码,使用对象的save()方法即可把数据保存到数据库中
 
 
 
3.2 把html的提交数据保存到数据库
 
1)在message_form.html中指定提交表单发送的地址,action就是指向我们在urls.py中配置的/form/,然后就可以在getform中取到传递的值
 
2)在message_form.html的表单标签</form>上面一行加入{% csrf_token %},否则会报403错误。原因是页面没有进行crsf验证,这是django的安全机制,不允许任意表单都可以往后台提交数据
 
3)request.POST可以把数据取出
 
 
 
 
 
 

 第三天

 

一. URL模板配置

 
本节将介绍url的配置,以及如何将数据库数据填充回前台html页面
 
1. 改写message/views.py中的getform函数如下
 
说明:
1)取出数据,将过滤到的数据赋值给变量message
2)修改return render,增加{"my_message": message},这样会有一个my_message对象随着返回页面,其中名字my_message可以任意写,message为上面的变量
 
 
2. 在前端页面中放入值
在message_form.html中,为input标签添加value,例如修改id = "name"的input标签如下
同样的方法修改邮箱和联系地址的input标签,并且修改textarea标签为
 
之后运行项目,发现原先address为西安的数据就会在页面上显示
 
 
 
3. 常见的几种模板标签介绍
 
3.1 if - else,改写姓名的<input>标签如下
如果有name等于jack1,页面中姓名输入框就显示 “对应昵称:天涯”,否则显示 "没找到昵称"
 
 
3.2 ifequal 和 ifnotequal,改写地址的<input>标签如下
 
 
3.3 slice,改写email<input>标签如下
如果email的前三位等于123,那么在网页上显示too simple,否则显示good email
 
 
 
 

二. URI别名设置技巧

 
1. 在djangostart/urls.py中为uri添加别名
 
2. 修改message_form.html中action的地址
 
这样我们如果修改urls.py中的匹配格式,不需要在修改前端代码中的值
 
 
 
 
 
 

django实战-留言板的更多相关文章

  1. Flask实战-留言板-安装虚拟环境、使用包组织代码

    Flask实战 留言板 创建项目目录messageboard,从GreyLi的代码中把Pipfile和Pipfile.lock文件拷贝过来,这两个文件中定义了虚拟环境中需要安装的包的信息和位置,进入m ...

  2. Django web框架开发基础-django实现留言板功能

    1.创建项目 cmd  django-admin startpoject cloudms 2.创建APP cmd django-admin startapp msgapp 3.修改settings,T ...

  3. django云端留言板

    1.创建应用 django-admin startproject cloudms cd cloudms python manage.py startapp msgapp 2.创建模板文件 在cloud ...

  4. flask实战-留言板-Web程序开发流程

    Web程序开发流程 在实际的开发中,一个Web程序的开发过程要设计多个角色,比如客户(提出需求).项目经理(决定需求的实现方式).开发者(实现需求)等,在这里我们假设自己是一个人全职开发.一般来说一个 ...

  5. php+redis实战留言板(todolist)与互粉功能

    目的:通过留言板(todolist)与互粉功能,掌握php操作redis的方法 相关数据操作命令 1,keys * 查看数据库所有的key 2,type + key: 如 type uid     查 ...

  6. Flask实战-留言板-使用Faker生成虚拟数据

    使用Faker生成虚拟数据 创建虚拟数据是编写Web程序时的常见需求.在简单的场景下,我们可以手动创建一些虚拟数据,但更方便的选择是使用第三方库实现.流行的python虚拟数据生成工具有Mimesis ...

  7. Flask实战-留言板-使用Bootstrap-Flask简化页面编写

    使用Bootstrap-Flask简化页面编写 扩展Bootstrap-Flask内置了可以快速渲染Bootstrap样式HTML组件的宏,并提供了内置的Bootstap资源,方便快速开发,使用它可以 ...

  8. Flask实战-留言板-使用Flask-DebugToolbar调试程序、Flask配置的两种组织形式

    使用Flask-DebugToolbar调试程序 扩展Flask-DebugToolbar提供了一系列调试功能,可以用来查看请求的SQL语句.配置选项.资源加载情况等信息.这些信息在开发时会非常有用. ...

  9. 写一个简单的HTML留言板

    最近有点懒,没码什么字,防止遗忘,从头开始码,写一个简单的HTML留言板.包含两个文件,book.html还有style.css,放在同一目录下. book.html 1 <!DOCTYPE h ...

随机推荐

  1. TIME_WAIT和CLOSE_WAIT状态区别

    [TIME_WAIT和CLOSE_WAIT状态区别] 常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭. TCP协议规定,对 ...

  2. 138. Copy List with Random Pointer (Graph, Map; DFS)

    A linked list is given such that each node contains an additional random pointer which could point t ...

  3. java 框架收藏

    一.java 异步非阻塞编程框架 1.Spring Webflux 2.Vert.x 3.Ratpack 4.smart-socket 国产异步框架 二.微服务框架 1.Jboot :专为大型分布式项 ...

  4. Nuget安装 Identity组件。

    Install-Package Microsoft.AspNet.Identity.EntityFramework –Version 2.0.0(2.2.1) Install-Package Micr ...

  5. redis centos 上以 tar.gz 安装redis

    1.下载安装文件#wget http://download.redis.io/releases/redis-3.2.3.tar.gz 2.删除文件 rm -rf /usr/local/redisrm ...

  6. 8.3 mysql 表操作

    库操作 一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等    performance_sch ...

  7. 持续集成与devops

    持续集成 持续集成 持续集成(Continuous integration,简称CI),简单的说持续集成就是频紧地(一天多次)将代码集成到主干,它的好处主要有两个: 1.快速发现错误.每完成一次更新, ...

  8. Oracle学习笔记(十)

    光标(游标)概念引入 就是一个结果集(查询或者其他操作返回的结果是多个时使用)定义一个光标 cursor c1 is select ename from emp: 从光标中取值 打开光标: --ope ...

  9. windows平台使用spark-submit以client方式提交spark应用到standalone集群

    1.spark应用打包,我喜欢打带依赖的,这样省事. 2.使用spark-submit.bat 提交应用,代码如下: for /f "tokens=1,2 delims==" %% ...

  10. [label][javascript-Unit Test][JSLint]A Guide To JSLint Messages

    原文链接: http://www.jameswiseman.com/blog/2011/03/26/coding-convention-an-style-guide/ http://www.james ...