django--没有整理,笔记
https://docs.djangoproject.com/en/2.2/
常用的数据路命令:
python manage.py makemigrations 数据移植准备
python manage.py migrate 数据移植 配置显示中文是时间区域
LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' pip install pipenv 安装pipenv
pipenv install 创建虚拟环境
在虚拟环境安装库使用 pipenv install *** 卸载使用 pipenv uninstall ***
进入虚拟环境 pipenv shell
pipenv --venv 查看虚拟环境对应解释器的安装目录
退出虚拟环境 exit
创建项目 项目名称mytest
django-admin startproject mytest
python manage.py runserver 启动服务器(在项目目录下)
python manage.py runserver 9999 改端口号 创建应用:
python manage.py startapp bobo 创建bobo的应用
创建完成时候 首先是把应用添加到项目mytset里面配置文件setting.py里面的 INSTALLED_APPS里 应用的讲解:
migrations:数据移植(迁移)模块
admin:当前应用的后台管理的配置文件
apps.py:当前应用的配置
models:数据模型模块,创建数据表子啊这里创建的,使用ROM框架
tests:自动化测试模块
views:执行响应的逻辑代码,代码逻辑处理的主要地点,主要的代码编辑区
创建字段:
name = models.CharField(max_length=20,verbose_name=u'用户名')#注释
当指定字段可以为空的时候需要在参数后面加null= True blank = True 这两个都要是True
也可以赋值默认值 default='',意思是当没有值的时候默认是''
定义主键是primary_key = True ,verbose_name='注释用的'
所有类型:
'AutoField自增', 'BLANK_CHOICE_DASH空白\选项\破折号', 'BigAutoField大自动场', 'BigIntegerField大积分场',
'BinaryField二进制字段', 'BooleanField布尔菲尔德', 'CharField查菲尔德', 'CommaSeparatedIntegerField通信分离的tegerfield',
'DateField日期字段', 'DateTimeField日期时间字段', 'DecimalField德西马尔菲尔德', 'DurationField工期字段',
'EmailField邮件字段', 'Empty空的', 'Field', 'FieldDoesNotExist', 'FilePathField文件路径字段',
'FloatField浮点', 'GenericIPAddressField', 'IPAddressField IP', 'IntegerField整数',
'NOT_PROVIDED', 'NullBooleanField空布尔', 'PositiveIntegerField正整数域',
'PositiveSmallIntegerField正小整数', 'SlugField', 'SmallIntegerField'小整数, 'TextField'文本字段,
'TimeField时间字段', 'URLField'网站字段, 'UUIDField', 做第一个响应网页:
在views里面引用from django.http import HttpResponse
创建一个函数def index(request):
return HttpResponse('Hello word!')
在项目mytest中的 urls配置这个函数的url 开发一个Template:
在web下创建一个templates目录,在该目录下穿件一个HTML文件
在views.py中返回一个render()传参数:第一个是request,第二个是html文件,第三个传的是字典:key是参数名,value是传递的数据
是后台传递到模板的参数,在模板的使用是{{参数名}}来直接使用
注意点:以上的有中情况,当html文件名陈一样,但是应用不一样的时候会出现调用同一个html。这是为了处理这个问题,在templates下
创建个应用相同的文件夹,然后把html放进去之后就解决了这个问题 Models介绍:ORM
一个Models对应一张数据库的表。
编写Models
创建一个类继承models.Model,一个类就是一张数据表
在类中创建数据表的字段
字段名=models.字段属性(长度限制等)
参考官方文档:https://docs.djangoproject.com/en/1.10/ref/models/fields/
创建好数据模型之后要映射成我们的数据表
执行python manage.py makemigrations app名(可选) 不写就默认整个项目
再执行python manage.py migrate 进行数据迁移 成功之后可以在应用下的migrstions下的文件查看
查看SQl需要执行 python manage.py sqlmigrate 应用名 文件ID 查看SQL语句
如 python manage.py sqlmigrate web 0001 取数据库的数据展示在html上:
在views中导入数据库
from web.models import testweb
def index(request):
user_name = testweb.objects.get(user='张三')#这个就是字段=值,也可以主键值pk=1
return render(request, 'web/index.html',{'user_name':user_name})
在html中:进行展现
<h1>{{ user_name.user }}</h1>
<h3>{{ user_name.aihao }}</h3> admin模块:admin是django自带的自动化数据管理界面
被授权用户可以直接在admin界面中管理数据库
首先是创建一个超级用户:
python manage.py createsuperuser
username = admin
password=zyb563151
登录amdin
127.0.0.1:8000/admin/
登录过程中可以遇到403 ,换个浏览器就解决问题了
登录上去之后是没有任务数据的,需要配置数据 在应用下的admin.py里面 是用来配置admin的
导入数据库名称
from web.models import testweb
admin.site.register(testweb) 数据有了但要改一下显示问题,让他显示人名称
早在models下数据库testweb下添加一个方法
__str__(self)或者__unicode__(self) -->版本不同不同
return self.uesr html中循环展示:
{% for xx in xxs %}
HTML语句
{% endfor %} 首先是views里面先要获取所有的对象
def index(request):
user_names = testweb.objects.all()
return render(request, 'web/index.html',{'user_names':user_names})#返回的是一个查询结果的集合对象 可以看做是一个列表
HTML里面写 Django中的超链接
html中<a href后面是目标地址
template 中可以用{% url 'app_name:app_name' param %}#app_name:应用名称 app_name:连接名称 param:地址参数,如user_name
其中app_name:app_name都是在url中配置
第一种写法:更urls,写include()的第二个参数位置,namespace = 'web'
第二种写法:应用下写在url()的第三个参数位置,name='user_name'
区别是:是否使用include引用了另一个url配置文件
最后在应用的urls中加上
app_name = '应用名' 编辑响应函数:
使用request.POST['参数名']获取表单数据
models.Article.objects.create(user,content) 创建对象 Templates 过滤器
写在模板中的,属于django的模板语言
可以修改模板中的变量,从而显示不同的内容
怎么使用过滤器?
{{变量 | 过滤器}}
列:{{list | length}}
可以叠加 {{value | filter1 | filter2 |...}}
如在编辑界面的代码
<input type="hidden" name="user_aihao" value="{{ aihao.id | default:'0'}}">
中的| default:'0'就是过滤器,意思就是没有的时候我给0 django shell:
它是一个Python的交互式命令行程序,自动引入了我们的项目环境,可以使用它和我们的项目进行交互
怎么使用 Django Shell?
python manage.py shell
比如:from web.models import testweb
testweb.objects.all() 可以直接获取数据
主要是可以调试 测试未知的方法
比如:testweb.objects.all().values()
不知道返回什么东西,什么格式,可以查看 admin
想要在admin看见更多的信息 显示其他字段
创建admin的配置类
class testwebAdmin(admin.ModelAdmin)
注册语句后加 admin.site.register(testweb.testwebAdmin) list_display = ('user','aihao')
list_display同时支出tuple和list list_filer = ('put_time',) 过滤器
更多的admin的参考https://docs.djangoproject.com/en/1.10/ref/contrib/admin/ 连接mysql用它作为数据库
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.mysql',
# 'NAME': '数据库名字',
# 'USER':'登录数据库的用户名',
# 'PASSWORD':'密码',
# 'HOST':'IP地址',
# }
# }
还要安装数据路的驱动
pip install mysql-python
放在 解释器venv\Lib\site-packages下
出来在环境下执行
pip.exe install mysqlclient-1.3.13-cp37-cp37m-win_amd64.whl
python manage.py makemigrations
python manage.py migrate css js的文件配置在配置文件中加入路劲
STATICFILES_DIRS=[
os.path.join(BASE_DIR,'static')#static是文件夹放css/js等
] -----------------------------------------------------------------------------------------------------------
数据库的增删该查:
查询数据库数据:
查询单条的数据是 变量= testweb.objects.get(pk=aihao_id)
变量= testweb.objects.filter(name='张三',age='18')# 这个像是select里面的and
查询多条的数据是 list = testweb.objects.all()
for i in list:
变量=list.name 变量=list.age 等 增数据 首先是实例化一个对象 message = testweb()
message.name = '李四'
message.age = '19'
message.save() 删除数据 在查询数据之后跟delete() 如:
变量= testweb.objects.get(pk=aihao_id)
变量.delete() list = testweb.objects.all()
for i in list:
变量=list.name.delete() ----------------------------------------------------------------------------------------------------------------------
HTML :
placeholder='请输入'#这是输入框的提示信息
value='{{message.name}}'#显示name 也可以用if else
value="{% if message.name=='张三' %}'我是张山{% end if%}#如果name是张三 就显示我是张三
value="{% if not message.name=='张三' %}'我不是张山{% end if%}#如果name不是张三 就显示我不是张三
value="{% ifequal message.name '张三' %}'我是张山{% end ifequal %}#如果name是张三 就显示我是张三
value="{% ifequal message.name | slice:'2' '张三' %}'我是张山{% end ifequal %}#如果前两个name是张三 就显示我是张三 --------------------------------------------------------------------------------------------------------------------------
坑:
安装的mysql8.x数据迁移的时候遇到django.db.utils.OperationalError: (2059, <NULL>)
是应为MySQL8.x采用了新的加密方式,但Django2.x并不识别此种加密,导致无法连接到数据库
解决方式是
cmd
mysql -u root -p
USE mysql;
# 修改加密方式
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
# 刷新数据库
FLUSH PRIVILEGES;
在尝试数据迁移就成功了。 ------------------------------------------------------------------------------------------------------------
HTML中的下拉框选择的数据我们常常要做后台验证,取值方式是
<select name="ds">
<option value="是">是</option>
<option value="否">否</option>
</select>
在views中取的是value的值
ds = request.POST['ds']
print(ds)
django--没有整理,笔记的更多相关文章
- canvas学习之API整理笔记(二)
前面我整理过一篇文章canvas学习之API整理笔记(一),从这篇文章我们已经可以基本了解到常用绘图的API.简单的变换和动画.而本篇文章的主要内容包括高级动画.像素操作.性能优化等知识点,讲解每个知 ...
- xmpp整理笔记:发送图片信息和声音信息
图片和音频文件发送的基本思路就是: 先将图片转化成二进制文件,然后将二进制文件进行base64编码,编码后成字符串.在即将发送的message内添加一个子节点,节点的stringValue(节点的值) ...
- xmpp整理笔记:聊天信息的发送与显示
任何一个信息的发送都需要关注两个部分,信息的发出,和信息在界面中的显示 往期回顾: xmpp整理笔记:环境的快速配置(附安装包) http://www.cnblogs.com/dsxniubilit ...
- xmpp整理笔记:用户网络连接及好友的管理
xmpp中的用户连接模块包括用户的上线与下线信息展现,用户登录,用户的注册: 好友模块包括好友的添加,好友的删除,好友列表的展示. 在xmpp中 负责数据传输的类是xmppStream,开发的过程中, ...
- xmpp整理笔记:xmppFramework框架的导入和介绍
一个将要开发xmpp的项目,建议在项目刚创建就导入框架,这样可以避免一些自己操作失误造成不必要的损失. xmpp中最常用的框架就是 xmppFrameWork 往期回顾: xmpp整理笔记:环境的快速 ...
- jQuery整理笔记文件夹
jQuery整理笔记文件夹 jQuery整理笔记一----jQuery開始 jQuery整理笔记二----jQuery选择器整理 jQuery整理笔记三----jQuery过滤函数 jQuery整理笔 ...
- sk_buff整理笔记(两、操作函数)
承接上一:sk_buff 整理笔记(一.数据结构)这一篇要讲的是内核为sk_buff结构提供的一些操作函数. 第一.首先要讲的是sk_buff中的四大指针: 四大指针各自是:head.data.tai ...
- Django初识 学习笔记一
Django初识 学习笔记一 mvcviewsmodelstemplate. 一 MVC框架 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(c ...
- element-ui 组件源码分析整理笔记目录
element-ui button组件 radio组件源码分析整理笔记(一) element-ui switch组件源码分析整理笔记(二) element-ui inputNumber.Card .B ...
- element-ui Carousel 走马灯源码分析整理笔记(十一)
Carousel 走马灯源码分析整理笔记,这篇写的不详细,后面有空补充 main.vue <template> <!--走马灯的最外层包裹div--> <div clas ...
随机推荐
- 用户登录时,禁止chrome提示用户保存密码
将input的type=“password”改为type=“text” 在获得焦点后,将type改为password <input class="iptpsw form-control ...
- 日常工作问题解决:redhat6.9--解决yum功能不能正常使用和配置yum源
1.问题描述 解决RedHat6.9下yum功能不能用问题: 在redhat6.9下使用yum安装时,会提示:This system is not registered to Red Hat Subs ...
- Java面试 - 什么是单例设计模式,为什么要使用单例设计模式,如何实现单例设计模式(饿汉式和懒汉式)?
什么是单例设计模式? 单例设计模式就是一种控制实例化对象个数的设计模式. 为什么要使用单例设计模式? 使用单例设计模式可以节省内存空间,提高性能.因为很多情况下,有些类是不需要重复产生对象的. 如果重 ...
- 【leetcode算法-中等】3. 无重复字符的最长字串
[题目描述] 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 " ...
- 乐字节Java编程之方法、调用、重载、递归
一.概述 方法是指人们在实践过程中为达到一定目的和效果所采取的办法.手段和解决方案. 所谓方法,就是解决一类问题的代码的有序组合,是一个功能模块.编程语言中的方法是组合在一起来执行操作语句的集合.例如 ...
- 【Linux内核】编译与配置内核(x86)
[Linux内核]编译与配置内核(x86) https://www.cnblogs.com/jamesharden/p/6414736.html
- PAT甲级 图 相关题_C++题解
图 PAT (Advanced Level) Practice 用到图的存储方式,但没有用到图的算法的题目 目录 1122 Hamiltonian Cycle (25) 1126 Eulerian P ...
- python学习-20 集合
集合set 1.由不同元素组成的集合,集合是一组无序排列的,集合中的元素必须是不可变的 -定义集合 第一种: jh = {1,2,3,4} print(type(jh),jh) 运行结果: <c ...
- Django查找数据库objects.filter() 排序order_by Q()与或非 F()属性之间比较 聚合函数的用法
条件选取QuerySet的时候,filter表示=参数可以写查询条件,exclude表示!=,querySet.distinct() 去重复(除了get返回值都是QuerySet,可以继续调用所有函数 ...
- 【C#】上机实验一
1.开发一个控制台应用程序,根据提示从键盘获取一个华氏温度,请转换并输出对应的摄氏温度. using System; namespace Project { class Program { publi ...