django实战-留言板

时间:2022-09-02 08:29:39

对应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如下,库名要事先写好
django实战-留言板django实战-留言板
 
安装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中添加如下代码:
django实战-留言板django实战-留言板
 
5.2 djangostart/urls.py中添加代码
django实战-留言板
 
5.3  DjangoGetStarted/settings.py 57行左右修templates代码块中的DIRS为如下,来指定模板位置
django实战-留言板django实战-留言板
 
5.4 页面出来后,没css样式,原因是css文件没找到,这是因为在settings.py中我们只是指定了静态文件目录名
django实战-留言板django实战-留言板
但是没指定静态文件查找的跟路径,所以还需添加如下代码
django实战-留言板django实战-留言板
 
 
 
 
 

 第二天  ORM

 

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

django实战-留言板django实战-留言板
 
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添加一条测试数据,例如
django实战-留言板django实战-留言板
 
 
2. 在message/views.py中修改为如下
django实战-留言板django实战-留言板
 
说明:
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()方法即可把数据保存到数据库中
django实战-留言板django实战-留言板
 
 
 
3.2 把html的提交数据保存到数据库
 
1)在message_form.html中指定提交表单发送的地址,action就是指向我们在urls.py中配置的/form/,然后就可以在getform中取到传递的值
django实战-留言板django实战-留言板
 
2)在message_form.html的表单标签</form>上面一行加入{% csrf_token %},否则会报403错误。原因是页面没有进行crsf验证,这是django的安全机制,不允许任意表单都可以往后台提交数据
 
3)request.POST可以把数据取出
django实战-留言板django实战-留言板
 
 
 
 
 
 

 第三天

 

一. URL模板配置

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

二. URI别名设置技巧

 
1. 在djangostart/urls.py中为uri添加别名
django实战-留言板django实战-留言板
 
2. 修改message_form.html中action的地址
django实战-留言板django实战-留言板
 
这样我们如果修改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&plus;redis实战留言板&lpar;todolist&rpar;与互粉功能

    目的:通过留言板(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. 设置Android程序图标

    先在/res/drawable/目录下放一个叫icon.png的图标图片(48×48),并且在/res/values/strings.xml中定义app_name 修改<string name= ...

  2. atitit&period;ajax bp dwr 3&period;的注解方式配置使用流程总结 VO9o&period;&period;&period;&period;&period;

    atitit.ajax bp dwr 3.的注解方式配置使用流程总结 VO9o..... 1. 安装配置 1 1.1. 下载  dwr.jar 1M 1 1.2. 配置注解方式..web.xml 1 ...

  3. Python核心编程--学习笔记--3--Python基础

    本章介绍基本的Python语法.编程风格:并简要介绍标识符.变量和关键字,以及变量占用内存的分配和回收:最后给出一个较大的Python样例程序来体验这些特性. 1 语句和语法 1.1 注释 可以在一行 ...

  4. jquery 源码学习(一)

    从上边的注释看,jQuery的源码结构相当清晰.条理,不像代码那般晦涩和让人纠结   1. 总体架构 1.1 自调用匿名函数 self-invoking anonymous function 打开jQ ...

  5. HDU - 3391 C - Mahjong

    题意:如果摸到的14张麻将,可以组成4副三张麻将连续或者相同的,以及两个一样的就能获胜. 思路:直接暴力枚举每种可以摸到的牌型,用dfs判断当前拿到的14张牌型能否获胜. 如果搜索时不优化会超时,如果 ...

  6. ubuntu下cmake 使用clang

    安装llvm.clang sudo apt-get install llvm clang clang命令会在/usr/bin/clang cmake配置交叉编译链 建立linux.toolchain. ...

  7. bzoj3048&lbrack;Usaco2013 Jan&rsqb;Cow Lineup 尺取法

    3048: [Usaco2013 Jan]Cow Lineup Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 225  Solved: 159[Subm ...

  8. 【mysql】mysql索引及优化学习

    一般优化mysql首先看查找的数据有没有用到索引,没有索引就加索引,有索引时候避免索引失效.(如果优化器觉得不需要索引就能返回所需要的数据暂不考虑) 看下面两条语句 MySQL [release_te ...

  9. 对nginx中location的认识

    关于一些对location认识的误区 1.location的匹配顺序是“先匹配正则,在匹配普通”. location的匹配顺序其实是“先匹配普通,在匹配正则”.造成误解的原因是:正则匹配会覆盖普通匹配 ...

  10. DevExpress v18&period;1新版亮点——Analytics Dashboard篇(二)

    用户界面套包DevExpress v18.1日前正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress Analytics Dashboard v18.1 的新功能,快 ...