对应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. Glow Shader

    [Glow Shader] Glow Shader基于BlurShader来实现.总的来说分为2步: 1.利用BlurShader渲染出BlurTexture. 2.将BlurTexture与SrcT ...

  2. SIEBEL GET最新时提示表异常

    无法GET最新,则将此表GET一次,CHECK OUT下来,再UNDO CHECK IN即可

  3. iOS下nil 、NULL、 Nil 、NSNull的区别

    1.nil,定义一个空的实例,指向OC中对象的空指针. 示例代码: NSString *someString = nil; NSURL *someURL = nil; id someObject = ...

  4. PCL 3维点云的模板匹配

    Doc 来自PCL官方文档 http://www.pointclouds.org/documentation/tutorials/template_alignment.php#template-ali ...

  5. __imp___vsnprintf

    unresolved external symbol __imp___vsnprintf 解决方案找到了. 在vs2015工程选项,链接器附加依赖项里面添加legacy_stdio_definitio ...

  6. Java 设计模式系列(二三)访问者模式(Vistor)

    Java 设计模式系列(二三)访问者模式(Vistor) 访问者模式是对象的行为模式.访问者模式的目的是封装一些施加于某种数据结构元素之上的操作.一旦这些操作需要修改的话,接受这个操作的数据结构则可以 ...

  7. SpringBoot配置Druid

    Druid是Java语言中最好的数据库连接池.Druid能够提供强大的监控和扩展功能.关于详细介绍可查看http://www.iteye.com/magazines/90 SpringBoot中集成D ...

  8. WebApi参数传递总结(转)

    出处:http://www.cnblogs.com/Juvy/p/3903974.html 在WebAPI中,请求主体(HttpContent)只能被读取一次,不被缓存,只能向前读取的流. 举例子说明 ...

  9. 进入docker的4种方式

    在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法. 进入Docker容器比较常见的几种 ...

  10. handsontable-常用配置

    冻结单元格 var //自动创建数据 myData = Handsontable.helper.createSpreadsheetData(100, 50), container = document ...