Django项目环境搭建
环境搭建
安装虚拟环境
-
安装虚拟环境
pip install virtualenv
-
升级pip
anaconda更新命令为
conda install mingw libpython
python为
python -m pip install --upgrade pip
-
解决如图所示的问题
博客:https://blog.csdn.net/wwangfabei1989/article/details/80107147首先执行 python -m ensurepip 然后执行 python -m pip install --upgrade pip 即可更新完毕。
-
出现报错处理:
https://blog.51cto.com/u_7739395/2787696 找到警告信息中报错的目录,然后删掉~开头的文件夹,删除后再次执行安装命令即可。
安装虚拟环境拓展包
-
执行安装命令
pip install virtualenvwrapper-win
创建虚拟环境
-
命令
mkvirtualenv 环境名称
-
修改环境目录
默认目录在c盘,不喜欢,修改到D盘,教程如下:https://blog.csdn.net/qq_41551049/article/details/101277208
修改成功
-
切换到某一个虚拟环境
workon 环境名称
-
虚拟环境退出
deactivate
-
删除环境
rmvirtualenv 环境名
-
列出所有的环境名称
lsvirtualenv
对虚拟环境的管理
-
查看环境已有的工具
给虚拟环境安装包
-
安装指定版本的django
pip install django==2.1
-
出现有一个升级问题
解决方式:执行
python.exe -m pip install --upgrade pip
命令执行命令后:
-
安装django
用命令行创建项目
命令行创建项目
-
进入到虚拟环境
-
创建django项目
django-admin startproject 项目名
注意:
-
如果要创建到指定目录,需要进入到该目录后,在执行创建指令
-
不能创建在环境目录里面,要和环境目录平齐
以下这种方式才是正确的:
-
-
查看相应目录
tree /f
-
文件讲解
- manage.py 项目管理文件
- settiings.py 项目配置文件
- urls.py url配置文件
- wsgi.py 兼容的web服务器入口
创建应用
-
在项目目录下创建子应用
python manage.py startapp 应用名称
注意:
- 在项目目录下创建子应用
-
文件讲解
admin.py
网站后台管理apps.py
子应用应用配置models.py
数据库相关的文件tests.py
数据测试用到的文件views.py
接收浏览器请求,处理,返回页面相关的数据__init__.py
编辑项目
-
使用pycharm打开创建项目
- 选择open打开项目
- 找到当前的项目目录
- 选中创建的django项目
-
勾选解释器
- setting
- 项目名称
- project interpreter项目解释器
- 选择为虚拟环境中的解释器
点击添加,选择已存在的环境,找到创建虚拟环境的目录
点击应用,即可
-
在INSTALLED_APP中注册应用
如果不注册,则创建的应用无法与项目关联
-
启动项目
python manage.py runserver
-
复制url在浏览器打开
用pycharm创建项目
-
选择创建一个Django项目,指定文件目录
选择解释器为虚拟环境的解释器,因为以及有解释器了,所以就不用选择创建一个新的解释环境。
-
TEMPLATES报错
修改为图示代码
第58行应该为:
'DIRS': [str.format(BASE_DIR, '/templates')],
,修改好运行就没问题了- 此处修改为
'DIRS': [os.path.join(BASE_DIR, 'templates')],
-
启动服务时,记得只启动一个,否则不会变化,默认以第一个项目为准
命令行创建的项目退出方式:使用
ctrl+z
, -
查看pycharm创建是否成功
设计模型
ORM框架
帮我们把类和数据表进行了映射
Django进行数据库开发
定义类
-
打开pycharm,编辑
models.py
文件,定义设计模型 -
创建一个存储书的模型
它包涵
- 书名
bittle
- 出版日期
bup_date
- 书名
-
具体代码入如下:
class BookInfo(models.Model): btitle = models.CharField(max_length=21) bpub_date = models.DateField()
数据迁移
-
生成迁移文件
打开命令行,输入
python manage.py makemigrations
-
在数据库中创建生成表
执行
python manage.py migrate
-
查看数据
点击选择当前使用的数据库类型
记得添加的时候需要下载驱动
-
查看
创建一个新表
-
在
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')
-
创建完成后,先对数据进行迁移,然后生成表
-
此时在数据库中也可以看到,
数据操作
-
进入到当前项目的shell
python manage.py shell
-
退出
ctrl+ D
-
引入编写的类
from booktest.models import BookInfo,HeroInfo
查询
-
查询当前表所有的图书信息
BookInfo.objects.all()
增加
-
新建实例对象
b = BookInfo()
-
给实例的属性进行赋值
注意:对时间赋值,需要导入一个date模块
b.btitle = "射雕英雄传" from datetime import date b.bpub_date = date(1991,1,31)
-
将新建的图书信息存入到表中
b.save()
-
可以在bookInfo表中看到
修改
-
针对某些数据进行查询
例:查询id=1的数据
b = BookInfo.objects.get(id=1)
注意:
- get里面需要
id=
否则报错
- get里面需要
-
获取id值,以及数据内容
b b.id b.btitle b.bpub_date
-
修改内容
例:修改出版日期
b.bpud_date = date(2019,1,1)
然后保存
b.save()
-
修改完后的效果
删除
-
命令
b.delete()
b为创建的实例
关联
-
创建一个对象
h = HeroInfo()
-
填入数据
这里的hbook涉及到外码操作,需要关联前文创建的实例b
h.hname = 'a1' h.gender = False h.hcommer = 'he is a boy' h.hbook = b
-
保存
h.save()
数据库中显示
-
查询关联
b.heroinfo_set.all()
管理站点
后台管理
使用Django管理
-
基本步骤
-
打开pycharm,启动项目
-
记得修改setting本地化:
-
创建管理员
在命令行,创建管理员
python manage.py createsuperuser
用户:miubai
密码:admin@dbs
-
输入网址,在后加上admin,输入用户名和密码
-
注册模型类
在admin.py文件内,注册模型类
注册完成后,就可以在web上看到了
-
自定义页面显示
在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)
-
报错处理:https://www.cnblogs.com/ShawSpring/p/10943147.html
错误内容为:
记得弄完后,还需要再次新建一个管理员,然后就可以添加了
视图及url
定义视图
views.py中定义
-
在views.py中添加如下代码
from django.http import HttpResponse def index(request): return HttpResponse("index")
实现对网页请求的响应
配置URLconf
在urls.py中添加匹配规则
-
添加代码如下
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文件(常用)
-
在应用(booktest)目录下新建一个urls.py文件,并写入
from django.urls import path # 引入视图模块 from booktest import views urlpatterns = [ # 配置首页url path('index/', views.index), ]
如图:
-
修改项目目录下的urls.py文件
from django.urls import path # 引入视图模块 from booktest import views urlpatterns = [ # 配置首页url path('index/', views.index), ]
如图:
-
输入url,打开后
模板
模板(专门定义前端页面)
创建模板
-
创建模板
创建templates,使用pycharm的话会自动创建
-
定义模板
在templates下创建一个应用目录,如本文的booktest目录,
然后创建一个html文件,填上一些代码:
<h1>{{ title }}</h1> {% for li in list %} {{ li }} <br> {% endfor %}
调用模板
基本步骤
-
进入到子应用下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))
-
如果出现报错,找不到模板,则修改setting文件中的代码
修改TEMPLATES中代码为:
'DIRS': [os.path.join(BASE_DIR, 'templates')],
简便方法
-
进入子应用booktest下的views.py文件,导入render包
from django.shortcuts import rende
-
修改函数内容
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)
-
需要注意的是render的三个参数
- request
- 模板文件路径
- 数据字典
-
结果如图
the end
老早前的笔记,一直懒得上传,写的也不好,舍友问我才想起来有这篇笔记系列。
本文来自博客园,作者:缪白(Miubai),转载请注明原文链接:https://www.cnblogs.com/Miubai-blog/articles/15854719.html