zoukankan      html  css  js  c++  java
  • 创建项目流程

    1.Django的命令:

    1. 下载
      1. pip install django==1.11.16
      2. pip install django==1.11.16 -i 源
    2. 创建项目
      1. django-admin startproject 项目名
    3. 启动项目
      1. cd 项目目录下 找到manage.py
      2. python manage.py runserver # 127.0.0.1:8000
      3. python manage.py runserver 80 # 127.0.0.1:80
      4. python manage.py runserver 0.0.0.0:80 # 0.0.0.0:80
    4. 创建一个APP
      1. python manage.py startapp app名称
      2. 注册
        settings-->INSTALLED_APP --> app名称.apps.app名称Config
    5. 数据库迁移
      1. python manage.py makemigrations # 在app下的migrations文件夹下记录 models的变更记录
      2. python manage.py migrate # 将models的变更记录同步到数据库中

    2.Django的配置

    1. 注释一个CSRF的中间件 可以提交POST
    2. databases 数据库
      1. ENGINE : mysql
      2. NAME : 数据库的名称
      3. HOST:主机的IP
      4. PORT:3306
      5. USER: 用户名
      6. PASSWORD: 密码
    3. 静态文件的配置
      1. STATIC_URL = '/static/' # 别名
      2. STATICFILES_DIRS = [
        os.path.join(BASE_DIR,'static')
        ]
    4. app
      1. INSTALLED_APPS = [
        'app01' ,
        'app01.apps.App01Config'
        ]
    5. TEMPLATES 模板相关的配置
      1. DIRS [ os.path.join(BASE_DIR,'templates')]

    3.Django使用mysql数据库的流程:

    1. 创建一个mysql数据库

    2. 在settings中进行配置
      DATABASES = {
      'default': {
      'ENGINE': 'django.db.backends.mysql',
      'NAME': 'bookmanager',
      'HOST': '127.0.0.1',
      'PORT': 3306,
      'USER': 'root',
      'PASSWORD': '',

          }
      }
      
    3. 在与settings同级目录下的init的文件中写:
      import pymysql
      pymysql.install_as_MySQLdb()

    4. 在app下的models中写类(models.Model)
      class Publisher(models.Model): # app01_publisher
      pid = models.AutoField(primary_key=True) # pid 主键
      name = models.CharField(max_length=32, unique=True) # 出版社名称

          def __str__(self):
              return self.name
      
      
      class Book(models.Model):
          title = models.CharField(max_length=32, unique=True)  # 书籍的名称
          publisher = models.ForeignKey('Publisher', on_delete=models.CASCADE)  # 关联了出版社
      
          def __str__(self):
              return self.title
      
      
      class Author(models.Model):
          name = models.CharField(max_length=32, unique=True)  # 作者的名字
          books = models.ManyToManyField('Book')  # 表示作者和书籍 多对多的关系
          # books = models.ManyToManyField('Book', through='Author_book',)  # 表示作者和书籍 多对多的关系
      
          def __str__(self):
              return self.name
      

      5.数据库迁移的命令

      1. python manage.py makemigrations # 在app下的migrations文件夹下记录 models的变更记录
      2. python manage.py migrate # 将models的变更记录同步到数据库中

    4.ORM的对应关系

    类     —— 》  表
    
    对象  ——》 记录(数据行)
    
    属性  ——》 字段
    

    5.ORM操作

    1. 查询
      1. models.Publisher.objects.all() # 查询所有的数据 ——》 QuerySet 对象列表
      2. models.Publisher.objects.get() # 获取满足条件的一个对象 ——》 单独的对象
      3. models.Publisher.objects.filter() # 获取满足条件的所有对象 ——》对象列表
      4. models.Publisher.objects.all().order_by('id') # 排序 —— 》 对象列表
      5. pub_obj.pk ——》 主键
      6. pub_obj.name
      7. 外键
        1. book_obj.publisher ——》 关联的对象
        2. book_obj.publisher_id ——》从book表中获取关联对象的ID
        3. book_obj.publisher.name ——》 关联的对象的属性
      8. 多对多
        1. author_obj.books ——》 管理对象 (正向)
        2. author_obj.books.all() ——》 关联的所有的对象 对象列表
        3. book_obj.author_set ——》管理对象 (反向)
    2. 增加
      1. models.Publisher.objects.create(name='xxx') ——》 对象
      2. 外键
        1. models.Book.objects.create(title='xxx',publisher=pub_obj)
        2. models.Book.objects.create(title='xxx',publisher_id=pub_obj.id)
      3. 多对多
        1. models.Author.objects.create(name='xxxx') ——》 author_obj
        2. author_obj.books.set([多个要关联对象的id,])
        3. author_obj.books.set([多个要关联对象,])
    3. 删除
      1. models.Author.objects.get(id=1).delete()
      2. models.Author.objects.filter(id=1).delete()
    4. 修改
      1. pub_obj.name = 'new_xxxx'
      2. pub_obj.save()
      3. 外键
        1. book_obj.title = 'xxxx'
        2. book_obj.publisher = pub_obj 或者 book_obj.publisher_id = pub_obj .id
        3. book_obj.save()
      4. 多对多
        1. author_obj.name = 'new_name'
        2. author_obj.save()
        3. author_obj.books.set([多个要关联对象,]) author_obj.books.set([多个要关联对象的id,])

    6.request

    1. request.method ——》 请求方式 8 种 GET/POST
    2. request.GET ——》 url上的参数 xxxx/?id=1&name=aelex {} [] request.GET.get('id')
    3. request.POST ——》 form表单提交的POST的数据 {} [] request.POST.get()

    7.函数的返回值

    1. HttpResponse('字符串') ——》 返回字符串
    2. render(request,'模板的文件名',{k1:v1}) ——》返回一个完整的页面
    3. redirect(''跳转的地址'') ——》 重定向 响应头 Location : '跳转的地址'
  • 相关阅读:
    ANGULAR 开发用户选择器指令
    ANGULARJS 动态编译添加到dom中
    poj1061
    poj1077
    poj1095
    poj1102
    poj1088
    血痹汤治四肢麻木
    重用白术、苡仁治腰痛
    腰间盘突出方(刘力红)
  • 原文地址:https://www.cnblogs.com/surasun/p/10060352.html
Copyright © 2011-2022 走看看