Django的一些基本配置
1 Django的安装:
可以使用pip也可以是用pycharm安装
1 pip install django==1.1.9(版本号自己指定)
2 pycharm安装
这里指定安装源,最好切换到国内
创建django项目:
可以使用命令行创建,也可以使用pycharm创建
1 命令行创建
django-admin startproject 项目名称
如果报错 将python中的script文件夹的路径配置环境变量中的基本配置,因为此文件夹下存在django-admin.py文件
2 pycharm创建:
File--new project--选django---然后选择python解释器
目录结构说明:
Setting 是django项目的配置文件
Urls 是指定路径和函数(django中叫视图)的对应关系
Wsgi 负责socket通讯
4 基本使用:
urls.py中的urlpatterns列表,根据请求首行中的路径和接口做一个对应(映射)关系,一个http请求中含有请求首行,请求头,请求体,也就是接口地址中
HttpResponse 指定回复http协议,且返回的是一个字符串
启动django项目:
可以使用命令行启动也可以使用pycharm启动
1 命令行启动:
cd到manage.py文件所在目录,然后python manage.py runserver ip:port
2 pycharm启动:
templete配置:
导入render 用于返回文件
这里 ‘xxx/one.html‘ 其实django会根据你配置的templete路径下查找
static配置:
然后在html文件引入的时候 将static的路径配上就行了
创建app项目:
可以理解为app就是其中一个应用或者子系统
创建命令---》python manage.py startapp app_name
app目录说明:
1 migrations 数据库 表相关
2 apps app配置相关
3 models 字段检查相关
4 tests 测试相关
5 views app 视图函数相关
在django中创建完app之后要在django中注册,让django知道app在哪里
django中的orm:
Python语法 自动翻译成 sql语句,为什么会有这个呢?因为程序员写sql水平层次不齐,所以有的人写出来的sql效率就比较低。
这个有点像js和jQuery的关系
Jquery | DOM |
$(‘#d1’) | document.getElementById(‘d1’) |
django默认的是sqlite数据库,我们要切换到mysql数据库,下面是配置。当然如果你使用的python3首先要安装pymysql
pip install pymysql
然后在app下的__init__.py中做些变更,实际就是告诉django,更改数据库默认配置为pymysql,替换掉mysqldb
相关app下的models.py中创建 相关表和字段
类名就是表名,里边的字段就是表中的字段
命令行创建表
Python manage.py makemigrations
相当于记录了models文件中的操作可以在migrations中看到 此时有2条记录只要以后改变了表中的代码 就必须先执行此命令
Python manage.py meigrate
这一步才是真正的执行
如果要进行删除表操作 只需要在model.py文件中注释掉或者删掉代码,然后重复执行以上两句命令
pycharm连接mysql数据库:
默认下载驱动 测试连接如果失败 检查 你的账号登录地址 mysql中看下mysql库下的-use表中看下 有没有限制ip登录 或则 驱动不匹配
在mysql中 下载,默认下载最新的
有可以 手动指定版本
在弹出的框中可以直接写sql
Pycharm 录入快捷键
简单的从mysql 数据库取值
Orm filter 和 get的区别
Get 返回的是一个modles的对象 但是入参只能是主键唯一或者 索引唯一的参数 如果不唯一 则报错
Filter 则没有这样的要求 返回的是一个queryset 类似与列表 可以配合 first() 使用 这样就能使用save等方法
坑:
1 模板语法 的坑
描述:
我希望修改出版社的名称 同时在修改出版社名称的页面,希望能将出版社的就名字带出来 就在模板语法中使用了 name={{book.name}}进行传参 但是发现 在使用 name取值的时候是空 后来经过排查 是模板语法 如果只传一个值 浏览器将name 键名直接改成了id 后来 改成
name={{ book.name }}&id={{ book.id }} 就可以了
也可以 直接传id 然后函数中使用orm 通过id 查值 后返回一个对象使用render传给页面 页面在使用 name 键 取值也可以
2 Orm 使用fifter 返回的是个queryset 列表 需要使用索引取值
另外orm 做update 直接通过orm对象 赋值就可以额