Django项目环境搭建

环境搭建

安装虚拟环境

  1. 安装虚拟环境

    pip install virtualenv

  2. 升级pip

    anaconda更新命令为

    conda install mingw libpython

    python为

    python -m pip install --upgrade pip

  3. 解决如图所示的问题

    image-20210702140818042

    博客:https://blog.csdn.net/wwangfabei1989/article/details/80107147首先执行 python -m ensurepip 然后执行 python -m pip install --upgrade pip 即可更新完毕。

  4. 出现报错处理:

    image-20210702141139416

    https://blog.51cto.com/u_7739395/2787696 找到警告信息中报错的目录,然后删掉~开头的文件夹,删除后再次执行安装命令即可。

安装虚拟环境拓展包

  1. 执行安装命令

    pip install virtualenvwrapper-win

    image-20210702141956449

创建虚拟环境

  1. 命令

    mkvirtualenv 环境名称

  2. 修改环境目录

    默认目录在c盘,不喜欢,修改到D盘,教程如下:https://blog.csdn.net/qq_41551049/article/details/101277208

    image-20210702143544635

    修改成功

  3. 切换到某一个虚拟环境

    workon 环境名称

    image-20210702143809735

  4. 虚拟环境退出

    deactivate

  5. 删除环境

    rmvirtualenv 环境名

  6. 列出所有的环境名称

    lsvirtualenv

对虚拟环境的管理

  1. 查看环境已有的工具

    image-20210702144724074给虚拟环境安装包

  2. 安装指定版本的django

    pip install django==2.1

  3. 出现有一个升级问题

    解决方式:执行

    python.exe -m pip install --upgrade pip命令

    image-20210702145157430

    执行命令后:

    image-20210702145307945

  4. 安装django

    image-20210702145415489

用命令行创建项目

命令行创建项目

  1. 进入到虚拟环境

  2. 创建django项目

    django-admin startproject 项目名

    注意:

    • 如果要创建到指定目录,需要进入到该目录后,在执行创建指令

    • 不能创建在环境目录里面,要和环境目录平齐

      image-20210702153936732

      以下这种方式才是正确的:

      image-20210702154023509

  3. 查看相应目录

    tree /f

    image-20210702150406708

  4. 文件讲解

    • manage.py 项目管理文件
    • settiings.py 项目配置文件
    • urls.py url配置文件
    • wsgi.py 兼容的web服务器入口

创建应用

  1. 在项目目录下创建子应用

    python manage.py startapp 应用名称

    注意

    • 在项目目录下创建子应用

    image-20210702151149062

  2. 文件讲解

    • admin.py 网站后台管理
    • apps.py 子应用应用配置
    • models.py 数据库相关的文件
    • tests.py 数据测试用到的文件
    • views.py 接收浏览器请求,处理,返回页面相关的数据
    • __init__.py

编辑项目

  1. 使用pycharm打开创建项目

    • 选择open打开项目
    • 找到当前的项目目录
    • 选中创建的django项目
  2. 勾选解释器

    • setting
    • 项目名称
    • project interpreter项目解释器
    • 选择为虚拟环境中的解释器

    image-20210702154239533点击添加,选择已存在的环境,找到创建虚拟环境的目录

    image-20210702154544500

    点击应用,即可

  3. 在INSTALLED_APP中注册应用

    image-20210702155216113

    如果不注册,则创建的应用无法与项目关联

  4. 启动项目

    python manage.py runserver

    image-20210702160009671

  5. 复制url在浏览器打开

    image-20210702160109880

用pycharm创建项目

  1. 选择创建一个Django项目,指定文件目录

    image-20210702160812261

    选择解释器为虚拟环境的解释器,因为以及有解释器了,所以就不用选择创建一个新的解释环境。

  2. TEMPLATES报错

    修改为图示代码

    image-20210702161429633

    第58行应该为:'DIRS': [str.format(BASE_DIR, '/templates')],,修改好运行就没问题了

    • 此处修改为
    'DIRS': [os.path.join(BASE_DIR, 'templates')],
    
  3. 启动服务时,记得只启动一个,否则不会变化,默认以第一个项目为准

    命令行创建的项目退出方式:使用ctrl+z,

  4. 查看pycharm创建是否成功

    image-20210702162106413

设计模型

ORM框架

image-20210702163658394

帮我们把类和数据表进行了映射

Django进行数据库开发

定义类

image-20210702164054099

  1. 打开pycharm,编辑models.py文件,定义设计模型

  2. 创建一个存储书的模型

    它包涵

    • 书名bittle
    • 出版日期 bup_date
  3. 具体代码入如下:

    class BookInfo(models.Model):
        btitle = models.CharField(max_length=21)
        bpub_date = models.DateField()
    

数据迁移

  1. 生成迁移文件

    打开命令行,输入python manage.py makemigrations

    image-20210702172450823

  2. 在数据库中创建生成表

    执行python manage.py migrate

    image-20210702172859115

  3. 查看数据

    点击选择当前使用的数据库类型

    image-20210702173231619

    记得添加的时候需要下载驱动

  4. 查看

    image-20210702180041398

创建一个新表

  1. models.py中添加新的类

    # 主角类 英雄类
    class HeroInfo(models.Model):
        # 英雄姓名
        hname = models.CharField(max_length=21)
        # 英雄性别,使用bool类型,
        hgender = models.BooleanField
        # 介绍
        hcomment = models.CharField(max_length=100)
        # 某个英雄来自于那本书?
        hbook = models.ForeignKey('BookInfo','id')
    
  2. 创建完成后,先对数据进行迁移,然后生成表

    image-20210702181052138

  3. 此时在数据库中也可以看到,

数据操作

  1. 进入到当前项目的shell

    python manage.py shell

    image-20210702181439849

  2. 退出

    ctrl+ D

  3. 引入编写的类

    from booktest.models import BookInfo,HeroInfo
    

    image-20210702182650229

查询

  1. 查询当前表所有的图书信息

    BookInfo.objects.all()

    image-20210702183657322

增加

  1. 新建实例对象

    b = BookInfo()

  2. 给实例的属性进行赋值

    注意:对时间赋值,需要导入一个date模块

    b.btitle = "射雕英雄传"
    from datetime import date
    b.bpub_date = date(1991,1,31)
    
  3. 将新建的图书信息存入到表中

    b.save()

    image-20210702184819665

  4. 可以在bookInfo表中看到

    image-20210702184952704

修改

  1. 针对某些数据进行查询

    例:查询id=1的数据

    b = BookInfo.objects.get(id=1)

    注意:

    • get里面需要id=否则报错
  2. 获取id值,以及数据内容

    b
    b.id
    b.btitle
    b.bpub_date
    
  3. 修改内容

    例:修改出版日期

    b.bpud_date = date(2019,1,1)

    然后保存

    b.save()

    image-20210702190917202

  4. 修改完后的效果

    image-20210702191226228

删除

  1. 命令

    b.delete()

    b为创建的实例

关联

  1. 创建一个对象

    h = HeroInfo()

  2. 填入数据

    这里的hbook涉及到外码操作,需要关联前文创建的实例b

    h.hname = 'a1'
    h.gender = False
    h.hcommer = 'he is a boy'
    h.hbook = b
    
  3. 保存

    h.save()

    image-20210702192348233

    数据库中显示

    image-20210702200820283

  4. 查询关联

    b.heroinfo_set.all()

管理站点

后台管理

使用Django管理

  1. 基本步骤

    image-20210702201727221

  2. 打开pycharm,启动项目

  3. 记得修改setting本地化:

    image-20210702202642388

  4. 创建管理员

    在命令行,创建管理员

    python manage.py createsuperuser

    用户:miubai

    密码:admin@dbs

    image-20210702203255524

  5. 输入网址,在后加上admin,输入用户名和密码

    image-20210703080900575

  6. 注册模型类

    在admin.py文件内,注册模型类

    image-20210703081813507

    注册完成后,就可以在web上看到了

    image-20210703081852589

  7. 自定义页面显示

    在admin.py文件中,写入相应的类

    class BookInfoAdmin(admin.ModelAdmin):
        list_display = ['id','btitle', 'bpub_date']
    
    
    class HeroInfoAdmin(admin.ModelAdmin):
        list_display = ['id', 'hname', 'hgender', 'hcomment', 'hbook']
    
    
    admin.site.register(BookInfo, BookInfoAdmin)
    admin.site.register(HeroInfo, HeroInfoAdmin)
    

    image-20210703083326882

  8. 报错处理:https://www.cnblogs.com/ShawSpring/p/10943147.html

    错误内容为:

    image-20210703091446658

    记得弄完后,还需要再次新建一个管理员,然后就可以添加了

    image-20210703091404825

视图及url

定义视图

views.py中定义

  1. 在views.py中添加如下代码

    from django.http import HttpResponse
    
    
    def index(request):
        return HttpResponse("index")
    

    实现对网页请求的响应

配置URLconf

在urls.py中添加匹配规则

  1. 添加代码如下

    from django.contrib import admin
    from django.urls import path
    from booktest import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('index/', views.index),
    ]
    

在应用下面创建一个urls.py文件(常用)

  1. 在应用(booktest)目录下新建一个urls.py文件,并写入

    from django.urls import path
    # 引入视图模块
    from booktest import views
    
    urlpatterns = [
        # 配置首页url
        path('index/', views.index),
    ]
    

    如图:

    image-20210703102320907

  2. 修改项目目录下的urls.py文件

    from django.urls import path
    # 引入视图模块
    from booktest import views
    
    urlpatterns = [
        # 配置首页url
        path('index/', views.index),
    ]
    

    如图:

    image-20210703102454571

  3. 输入url,打开后

    image-20210703102554164

模板

模板(专门定义前端页面)

创建模板

  1. 创建模板

    创建templates,使用pycharm的话会自动创建

  2. 定义模板

    在templates下创建一个应用目录,如本文的booktest目录,

    然后创建一个html文件,填上一些代码:

    <h1>{{ title }}</h1>
    {% for li in list %}
        {{ li }} <br>
    {% endfor %}
    

    image-20210703103837781

调用模板

基本步骤

  1. 进入到子应用下booktest下,找到views.py文件,修改为:

    from django.shortcuts import render
    from django.http import HttpResponse
    from django.template import loader
    
    
    def index(request):
        # 获取模板
        template = loader.get_template('booktest/index.html')
        # 定义上下文
        context = {'title': '图书列表', 'list': range(10)}
        # 渲染模板
        return HttpResponse(template.render(context))
    

    image-20210703163944689

  2. 如果出现报错,找不到模板,则修改setting文件中的代码

    image-20210703163533612

    修改TEMPLATES中代码为:

    'DIRS': [os.path.join(BASE_DIR, 'templates')],
    

    image-20210703163734530

简便方法

  1. 进入子应用booktest下的views.py文件,导入render包

    from django.shortcuts import rende

  2. 修改函数内容

    from django.shortcuts import render
    from django.http import HttpResponse
    from django.template import loader
    from django.shortcuts import render  # 导入渲染函数
    
    
    def index(request):
        # 内容字典必须要有
        context = {'title': '图书列表', 'list': range(10)}
        # 渲染模板
        # render第一个参数必须是request
        # render第二个参数是模板文件的路径
        # render第三个参数是数据字典
        return render(request, 'booktest/index.html', context)
    
  3. 需要注意的是render的三个参数

    • request
    • 模板文件路径
    • 数据字典
  4. 结果如图

    image-20210703165953837


the end

老早前的笔记,一直懒得上传,写的也不好,舍友问我才想起来有这篇笔记系列。

posted @ 2022-01-29 12:18  缪白(Miubai)  阅读(99)  评论(0)    收藏  举报