一 DJango 所有命令:

  1下载:   



控制台:
pip install django==1.11.18

pip install django==1.11.18 -i  源
解释器:
找到解释器,点击加号搜索django



  2创建项目;



控制台:  
 当前创建文件的目录 django-admin startproject 项目名称 (这里创建的项目没有模板文件templates)
pc创建:
 file-->newprojet-->django-->(里面可以直接编辑templatesw和app文件名)



  3 启动项目:



控制台:
    切换到项目目录  python manage.py runserver #127.0.0.1:8000(默认的)
   ip和端口可以改:  .............192.168.1.1:80#192.168.1.1:80



  4 创建app :



控制台:
    使用python自带控制台就不需要定义当前目录了,直接 manage.py startapp  app文件名
pc:
 Tools-->run manage.py task -->startapp app名字
app文件下的py文件:
  views.py (写函数)
  models(orm相关)
  admi.py(管理后台)
  apps.py
  tests.py(测试用)



  5 数据库迁移:



python manage.py makemigrations  #会在migration文件下产生一个py文件将models变更记录保存
python manage.py migrate # 同步到数据库



二 django srttings配置

  



NSTALLED_APPS = [

    'app01'  或者 ‘app01.apps.App01Config’(用pc创建会自带这个)

]



数据库的配置

    ENGINE: mysql

    NAME: 数据库名称

    HOST:  IP  

    PORT: 3306

    USER: 用户名

    PASSWORD: 密码



静态文件

    STATIC_URL = '/static/'   # 别名  注意你的静态文件外接开头都要使用/static/
 STATICFILES_DIRS = [  os.path.join(BASE_DIR,'static'),(可以配置多个,但他会按顺序找,找到一个就不找了) 
                       os.path.join(BASE_DIR,'static1'),  ]



中间件:

    注释csrf的中间件      ——》 可以提交POST请求



TEMPALTES

```
'DIRS': [os.path.join(BASE_DIR, 'templates')]  # 检查你的模板配置是不是这个路径,一般没错
```



三 django 使用mysql数据库:

  1控制台创库  

  2 配置; django默认使用他自己的 sqlite3数据库

  3 告诉django 使用pymysql连接数据库(

    在settings.py同级目录下__inin__,py中写



import pymysql
   pymysql.install_as_MySQLdb()



  4  在app下的models.py中写类(继承models.Model):

   



from django.db import models

class BookManage(models.Model):

    pid=models.AutoField(primary_key=True) # 设置主键 并且让其自增
    name=models.CharField(max_length=20,unique=True) #设置名字字段,并且让其唯一

    def __str__(self):

        return self.name



  5  执行数据库迁移的命令   



python manage.py makemigrations  # 将models变更记录保存到migrations

   python manage.py migrate    # 将变更同步到数据库中



四  get和 post

  get: 获取一个页面

    在地址栏里输入回车

    form 表单 默认就是get

    a标签

    重定向也算是get(跳转)

  get提交数据:  127.0.0.1:8000/edit_publisher/?pk=3&k1=v1

    获取get数据:  request.GET .get(''pk'') #返回的是一个类似字典的东西 所以可以直接通过get(键)来获取数据 ,也可以通过索引来取

  post: 提交数据:

    form表单

五 orm (对象关系映射)

    对应关系:

       类------>表

       对象----->数据

       属性----> 字段



from app01 import models # 先导入modes模块



曾:



models.Publisher.objects.create(name='xxxxx出版社')   ——》返回字符串对象



查:



models.Publisher.objects.get(pk=3)     —— 》返回字符串对象  #dasdggfrg <class 'app01.models.BookManage'>




models.Publisher.objects.filter(pk=3)  ——》 返回单行对象列表 

    models.Publisher.objects.all()      ——》 返回全部对象列表



删:



models.Publisher.objects.get(pk=3).delete() 

    models.Publisher.objects..filter(pk=3).delete()



改:

  



obj = models.Publisher.objects.get(pk=3) # 返回的是对象

    obj.name = 'xxxxx'  

    obj.save()



六  模板语法:

  



render(request,'模板的文件名',{ 'new_name': 'xxxxx','all_publisher' : all_publisher })

1.变量

{{  new_name  }}  ——》 xxxxx

2.for循环

{%  for i in all_publisher %}

    {{  forloop.counter  }}

    {{  i  }}

    {{  i.name  }}

    {{  i.pid }}   {{  i.pk }}

{% endfor %}