Django 第二篇

1.路由访问服务器不带斜杠,内部开始找不到路径,
内部会返回一个带斜杠的路由给浏览器,浏览器再次
携带那个带斜杠的路由再次访问服务器,简称自动重定向加斜杠路由。
所有的html文件默认都写在templates文件夹下

所有的静态文件(css,js,前端第三方类库)默认都放在static文件夹下

html页面引入外部资源的方式
    cdn
    本地

form表单触发提交数据的动作两种方式
    1.<input type="submit">
    2.<button></button>
form提交数据的地址如何指定及方式?
    action属性控制提交的地址
    方式:
        1.全路径
            <form action="http://127.0.0.1:8000/login/">
        2.只写路径后缀
            <form action="/login/">
        3.不写 (默认往当前路径提交)
    form表单默认是get请求
1.request.method:获取提交数据的方式,GET或者POST
request.POST:获取post提交的数据
request.GET :获取GET提交的数据

例如<request.POST: QueryDict:
{‘username‘: [‘jason‘], ‘password‘: [‘123‘]} >

 request.POST.get(‘username‘)=jason,想要获取values
中的全部数据用getlist(),value是一个列表,但是get出来确实
一个元素,而且默认取出列表里面的最后一个元素
djangol链接数据库
1.需要修改配置文件,django默认链接自己的db.sqlite3
我们把那个改成mysql,k键全部改成大写。
2.告诉Django用pymysql替换它默认的数据库
方式1,在项目文件夹下面的init或者应用文件下的init
固定写法;

import pymysql
pymysql.install_as_MySQLdb()告诉django用pymysql代替mysqldb连接数据库
orm
1.django的ORM不能主动创建库,要你自己手动创建库,orm会帮你创建表
数据库迁移命令
python3 manage.py makemigrations
将你的数据库变动记录到一个小本本上(并不会帮你创建表)
python3 manage.py migrate
将你的数据库变动正在同步到数据库
PS:每动一次数据库,必须执行这两条命令
新增数据
方法1.
user_obj = models.User.objects.create(name=username,password=password)
方法2.
user_obj = models.User(name=username,password=password)
user_obj.save()  # 对象调用save方法保存到数据库
查询数据
user_list = models.User.objects.all()  # 获取user表所有的数据
PS:这里的user_list是一个列表,里面是QuerySet对象,可以query
查看SQL语句,只有QuerySet对象才可以点query。
user_obj = models.User.objects.filter(id=edit_id).first()
这是一个数据对象,获得的是一个数据对象列表,可以索引取值
first是取第一个对象,filter当条件不存在的情况下会返回一个空的queryset对象

user_obj = models.User.objects.get(id=edit_id)
get也可以获取数据对象,但查询条件不存在会报错,filter不会报错
获取对象id的获取方式
方式1:利用input隐藏一个标签
<input type="hidden" name="edit_id" value="{{ user_obj.pk }}">
方式2:
<form action="/edit/?edit_id={{ user_obj.pk }}" method="post">
重定向  可以写别人的网址也可以是自己的路径
return redirect(‘/userlist‘)
return redirect(www.baudu.com)
利用a标签href属性 可以指定页面跳转的路径
href可以写全路径 但是推荐写后缀即可
<a href="/reg/" class="btn btn-success">添加数据</a>

# 注意 路径的书写一定要加斜杠
数据删除
models.User.objects.filter(id=1).delete()
# 会将queryset所有的数据对象全部删除
更新数据
方法1
models.User.objects.filter(id=edit_id).update(name=username,password=password)
方法2
user_obj = models.User.objects.filter(id=edit_id).first()
user_obj.name = username
user_obj.save()
推荐使用第一种
对表的操作
增加字段,直接写就行,删除字段直接注释,
ps,只要动了那个class 就要执行两天数据库迁移命令
使得orm映射成功
创建类
1.id字段可以不写,默认帮你创建主键id字段
2.一对多字段的建立,外键建立在多的那一方,
例如;publish=models.ForeignKey(to=‘publish‘)
意思就是将表与publish表关联,publish可以不带引号
但是必须写在关联表的下面,推荐使用带引号
3.多对多外键建立在关联的两张表中随意一张都行,推荐建在
查询频率高的那张表,且多对多字段不会出现在建立表的字段中
而且,数据库里的表会自动帮你补全id,所以不要多此一举

原文地址:https://www.cnblogs.com/jingandyuer/p/10986680.html

时间: 2024-12-13 22:26:13

Django 第二篇的相关文章

Python基础(Django第二篇)

一.Django路由系统 说明:Django中每一个请求的url必须有一个相应的函数来处理,当请求到达时会根据urls.py文件配置的规则从上往下匹配,匹配一条则不再往下匹配. 配置文件:urls.py 配置方式: 静态路由:一个url对应一个views中的函数. 例:url(r'^index/$', views.index), 动态路由:多个URL对应一个views中的函数,此处的url多为正则匹配. 例:url(r'^index/(.*)/$', views.index), 默认路由:当此条

Django框架之第二篇

Django框架之第二篇 一.知识点回顾 1.MTV模型 model:模型,和数据库相关的 template:模板,存放html文件,模板语法(目的是将变量如何巧妙的嵌入到HTML页面中). views:视图函数 另加urls:url路径与视图函数的映射关系,,可以不是一一对应的. 2.相关的一些命令 创建一个Django项目:django-admin  startproject  projectname 创建一个项目下的应用:python3  manage.py  startapp  appn

Django之模型层第二篇:多表操作

Django之模型层第二篇:多表操作 一 表关系回顾 ? 在讲解MySQL时,我们提到,把应用程序的所有数据都放在一张表里是极不合理的. ? 比如我们开发一个员工管理系统,在数据库里只创建一张员工信息表,该表有四个字段:工号.姓名.部门名.部门职能描述,此时若公司有1万名员工,但只有3个部门,因为每一名员工后都需要跟着部门信息(部门名.部门职能),所以将会导致部门信息出现大量重复.浪费空间. ? 解决方法就是将数据存放于不同的表中,然后基于foreign key建立表之间的关联关系. ? 细说的

Android Metro风格的Launcher开发系列第二篇

前言: 各位小伙伴们请原谅我隔了这么久才开始写这一系列的第二篇博客,没办法忙新产品发布,好了废话不说了,先回顾一下:在我的上一篇博客Android Metro风格的Launcher开发系列第一篇写了如何配置Android开发环境,只是用文字和图片展示了开发Metro风格Launcher的初步设计和产品要求,这一篇文章将会从代码上讲解如何实现对应的UI效果,好了,评书开讲! Launcher主体框架实现: Launcher主体框架我选用的是大家所熟悉的ViewPager控件,因为ViewPager

[C++11新特性]第二篇

0.可变数量参数,可变函数模版,变长模版类 c++98可变数量参数 #include<cstdio> #include<cstdarg> double SumOfFloat(int count, ...) { va_list ap; double sum=0; va_start(ap,count); for(int i=0;i<count;i++) sum+=va_arg(ap,double); va_end(ap); return sum; } int main() { p

第二篇 基于微擎的模块开发—PHP

从陌生到如今能勉强完成第一个微网站模块的实现.也算是一个小小的进步,从设计数据库到,返回数据,前端模版渲染 每一点都是有点难度的.所以我想总结一下,我是如何实现一个微擎模块. 第一,首先得分析某个模块的想实现什么需求,根据需求设计合理的数据库结构. 第二,了解微擎的结构,运行流程,设计模块结构. 第三,重点就是site.php , 完成site.php 需要一定的php的编程能力, 第四,site.php 其中 通过 pdo 从数据库的获取我们想得到数据源. 微擎已封装其路由机制, doWeb

Python之路【第二篇】:Python基础(一)

Python之路[第二篇]:Python基础(一) 入门知识拾遗 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1:     name = 'wupeiqi' print  name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 1 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为假:result = 值2 三.进制 二进制,01 八进

chromium浏览器开发系列第二篇:如何编译最新chromium源码

说一下为什么这么晚才发第二篇,上周和这周department的工作太多了,晚上都是十点半从公司出发,回家以后实在没有多余的精力去摸键盘了.所以请大家包涵! 上期回顾: chromium源码下载: 1.找个靠谱的vpn(我试过了,网上说的不用vpn拿代码的都不靠谱): 2.获取depot_tools,解压,设置环境变量; 3.gclient获取python和git,svn,设置环境变量: 4.fetch–nohooks chromium –nosvn=true 获取源码: 5.gclientsyn

第二篇 SQL Server代理作业步骤和子系统

本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作).每个作业步骤运行于一个单独的安全上下文,尽管每个作业有一个所有者来决定谁可以修改作业.本篇主要关注组成SQL Server代理的作业步骤和子系统.快速回顾作业理解SQL Server代理作业的最佳方式是把相关联的 需要完成给定任务 的组件放在一个容器中.作业最主要的组件有作业步骤.计划.警告和通知.