对应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. 【Python爬虫】听说你又闹书荒了?豆瓣读书9.0分书籍陪你过五一

    说明 五一将至,又到了学习的季节.目前流行的各大书单主打的都是豆瓣8.0评分书籍,却很少有人来聊聊这9.0评分的书籍长什么样子.刚好最近学了学python爬虫,那就拿豆瓣读书来练练手. 爬虫 本来思路 ...

  2. 关于mybatis框架的总结【转载】

    原文地址:https://www.cnblogs.com/xiaotie666/p/LiujinMybatisSummary.html 此文为转载.请支持原作者. 最近在学习MyBatis框架,我在这 ...

  3. 通过@Configuratin配置Bean

    Spring的依赖注入可以基于xml配置,也可以基于注解配置,还可以基于java类配置. 普通的bean类,只要标注了@Configuration注解,就可以为Spring容器提供Bean定义的信息. ...

  4. 01b-1: 性能测度

  5. python3菜鸟教程

    http://www.runoob.com/python3/python3-class.html

  6. java把流抛给浏览器下载时,当下载的文件文件名为中文时,出现中文名被替换为“----------”的情况

    比如说,下载的文件名为: 软件分析报告.docx,当使用流抛给浏览器下载时,浏览器下载的文件为:-----------.docx 出现这种情况的原因:大体的原因就是header中只支持ASCII,所以 ...

  7. SVG DOM常用属性和方法介绍(1)

    12.2  SVG DOM常用属性和方法介绍 将以Adobe SVG Viewer提供的属性和方法为准,因为不同解析器对JavaScript以及相关的属性和方法支持的程度不同,有些方法和属性是某个解析 ...

  8. MySql创建多表关联的步骤

    一,一对多表的创建 1.创建主表 create table HostTable( cid varchar(32) primary key, cname varchar(100)); 2.创建从表 cr ...

  9. ESXi系统命令行下启动虚拟机

    从命令行启动虚拟机: 用命令列出虚拟机的ID:vim-cmd vmsvc/getallvms |grep <vm name>注意: 第一列输出是vmid. 用命令查看虚拟机启动状态:vim ...

  10. VC获取网页标题,解决乱码问题 学习

    博主不让转载 仅记录下地址 稍后 放出自己的代码 http://blog.csdn.net/friendan/article/details/11821135