Django单表的增删改查

1.Django下载
命名行
pip install django==1.11.16
pip install django==1.11.16 -i https://pypi.doubanio.com/simple/ 
pycharm
settings    解释器   点+号    输入Django  选择版本   下载
2.创建项目
命令行
django-admin startproject 项目名
pycharm
file   new project   选择Django 输入项目名称 选择解释器 输入APP名称  创建项目
3.启动项目
命令行
切换到项目的根目录下  manage.py
python manage.py runserver    # 127.0.01:8000
python manage.py runserver  80  # 127.0.01:80
python manage.py runserver   0.0.0.0:80  # 0.0.0.0:80
pycharm
修改配置
点三角启动  dj 
4.配置文件
数据库 
静态文件 
​ STATIC_URL = '/static/'    # 别名
​ STATICFILES_DIRS = [
​ os.path.join(BASE_DIR,'static') ,
​ ]
模板 
​ TEMPLARTES 
​ DIRS  [os.path.join(BASE_DIR, 'templates')]
中间件
​ 注释掉'django.middleware.csrf.CsrfViewMiddleware'
5.urls.py
​ 写url和函数的对应关系
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'login/', views.login),
    url(r'index/', views.index),
    url(r'test/', views.test),
​
]
6.函数
  参数: request  跟请求相关的内容
​ request.method  请求方式    GET POST  PUT 
​ request.POST      form表单提交POST请求传递的数据    {}    []  get
​ request.GET         URL地址上的参数    {}  
   返回值:
​    from django.shortcuts  import HttpReponse,render,redirect 
​    HttpReponse('字符串')        返回一些字符串  
​    render(request,'模板的文件名')      返回一个完整的HTML页面
​    redirect('要跳转的地址')       重定向    Location : 地址   
7.app
创建APP
命令行
python manage.py  startapp app名称
pycharm
tools run manage.py task   startapp app名称
注册APP
​ INSTALLED_APPS = [
​ 'app01' 或者 'app01.apps.App01Config', 
]
8.form表单
action = ''   method ='post'    action 提交的地址  method 请求方式
所有的input标签要有name属性
一个input标签的type='submit'  或者  button
9.get 和 post的区别
get
获取一个页面  
路径/?name=alex&pwd=alexdsb
   request.GET 
post
提交数据
request.POST
10.Django使用mysql数据库的流程:
创建一个mysql数据库
在settings中配置DATABASES
​ ENGINE :  mysql ; 
​ NAME:   数据库的名称;
​ HOST:  IP   '127.0.0.1'   
​ PORT:  3306;
​ USER:  用户名;
​ PASSWORD:  '密码';
告诉Django使用pymysql连接数据库
在与settings同级目录下的__init__.py写代码:

import pymysql
pymysql.install_as_MySQLdb()
. 写表  在app下的models.py中写类(继承models.Model) 

class User(models.Model):   # 默认表名  app01_user
    name = models.CharField(max_length=32)   # varchar(32)
    pwd = models.CharField(max_length=32)
​
    def __str__(self):
        return self.name
执行数据库迁移的命令
python manage.py  makemigrations  # 记录models的变更记录
python  manage.py  migrate        # 把变更记录的操作同步到数据库中
11.ORM
  对象和关系型数据库的一个映射    同过操作对象的方式操作数据库的内容
对应关系
​ 类        ___>     表
​ 对象    ___>    记录  数据行
​ 属性    ___>    字段
ORM的功能:
操作数据表
操作记录
具体的操作

from app01 import models 
# 获取所有数据
models.User.objects.all()   # __>  QuerySet 对象列表 
# 获取单个对象   获取不到数据或者拿到多条数据就报错
models.User.objects.get(name='alex',pwd='111')   # __> 对象
# 获取满足条件的所有对象  
models.User.objects.filter(name='alex',pwd='111')  # __>  QuerySet 对象列表 
单表的增删改查
1.展示
model

class Publisher(models.Model):  # app01_publisher
    pid = models.AutoField(primary_key=True)  # pid 主键
    name = models.CharField(max_length=32)  # 出版社名称
​
    def __str__(self):
        return self.name
设计URL

from app01 import views
# 展示出版社
url(r'^publisher_list/',views.publisher_list ),
写函数

from app01 import models
# 展示出版社
def publisher_list(request):
    # 从数据库获取所有出版社对象
    all_publisher = models.Publisher.objects.all()
    return render(request, 'publisher_list.html', {'all_publisher': all_publisher})
写模板

<table border="1">
    <tr>
        <th>ID</th>
        <th>名称</th>
    </tr>
​
    {% for foo in all_publisher %}
        <tr>
        <td>{{ foo.pk }}</td>
        <td>{{ foo.name }}</td>
        </tr>
    {% endfor %}
</table>
模板语法
{{  变量 }}
循环   
​ {%  for i in  all_publisher %}
​ {{ forloop.counter }}   #  当前循环的测试 
​ {%  endfor %}
 
2.增加、删除、编辑
见代码
3.新增ORM操作

# 新增数据
ret = models.Publisher.objects.create(name=new_name)   # ret 是对象
# 删除数据
models.Publisher.objects.get(pk=pk).delete()
# 修改数据
obj_list = models.Publisher.objects.filter(pk=pk)
obj = obj_list[0]
obj.name = new_name  # 内存中修改数据
obj.save()  # 向数据库提交,保存到数据库中
 
 

  

posted @ 2018-12-04 17:32  冒蓝火的加特林哒哒哒  阅读(199)  评论(0编辑  收藏  举报