欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

创建项目流程

程序员文章站 2022-06-12 17:58:26
...

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 : '跳转的地址'