- 创建虚拟环境的方式和flask中的一篇博客的描述相同,请参看该文章:
http://blog.youkuaiyun.com/LCY133/article/details/108985485
主要步骤:
1.安装pipenv:
pip install pipenv
- 创建一个文件夹,比如djangoTest
- 创建虚拟环境
pipenv shell
4.配置环境变量中的WORKON_HOME:这个位置是放置新创建的虚拟环境的,我设置的是D:\ENVS
5.从pycharm指定该虚拟环境使用的python环境:这个环境可以从envs里找
6.在该环境安装django和配置django(下文详述)
但是,有个独特的:django框架更加全面,更加大,不灵活,不过使用起来不用定义太多的其他功能
Django也遵循MVC思想,但是有自己的一个名词,叫做MVT
MVT模式:
Django从请求到接到响应的生命周期
python3.6.5 版本的更稳定
- 安装django:
我们在使用中推荐使用django2.2 而默认pip安装的是3.3 所以需要加参数进行相关的限制
pip install Django==2.2
,这样就可以安装指定的版本了
安装之后可以通过pip list查看当前版本
- 创建django文件:
1.通过专业版pycharm进行创建时可以通过该方法:
社区版用不了
2.通过命令行的方式干:
django-admin startproject class0
在创建之后,会在文件夹内生成好多必要的内容
很方便
连manage.py都有了,都不用自己写
python manage.py runserver
也可以指定端口:
python manage.py runserver 8080
需要先进行数据迁移:
python manage.py migrate
然后
python manage.py runserver 8080
要进行数据迁移的原因是在django中进行了数据库迁移,在settings中
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
sqlite3是一个微型的数据库,mysql更加高并发
- Django项目的创建以及app的创建
app:app是django项目的组成部分。一个app代表项目中的一个模块,所有URL请求的响应都是由app来处理。比如豆瓣,里面有图书,电影,音乐,同城等许许多多的模块,如果站在django的角度来看,图书,电影这些模块就是app,图书,电影这些app共同组成豆瓣这个项目。因此这里要有一个概念,django项目由许多app组成,一个app可以被用到其他项目,django也能拥有不同的app。
有多个app 的好处:易于管理 协同开发和维护
创建app:比如我创建了个名为book的app
python manage.py startapp book
路由严格的开始和严格的结束
django不需要一个严格的开始和结束,后面的斜杠可以不用加,自己就给加上了
- 初体验:
在urls中进行实验:
from django.contrib import admin
from django.urls import path
from django.http import HttpResponse
def index():
return 'hello world'
urlpatterns = [
path('admin/', admin.site.urls),
path('', index),
]
其中可以指定默认的视图:
此时运行会出现错误
我们进入debug.py,可以看到
django2.2的debug有问题,没有指定编码方式,所以需要我们在源码里改动
def get_traceback_html(self):
"""Return HTML version of debug 500 HTTP error page."""
with Path(CURRENT_DIR, 'templates', 'technical_500.html').open(encoding='utf-8') as fh:
t = DEBUG_ENGINE.from_string(fh.read())
c = Context(self.get_traceback_data(), use_l10n=False)
return t.render(c)
在open中添加encoding=‘utf-8’,指定编码格式
- 修改之后再运行:
此时可以在打开的127.0.0.1:8000中看到debug的信息
也就是说index里没有参数,需要用django专用的格式进行输出
此时给index加入参数request
还需要用django指定的response方式:
通过下面的方式
from django.contrib import admin
from django.urls import path
from django.http import HttpResponse
def index(request):
# name = request.Get.get('name')
return HttpResponse('hello world')
urlpatterns = [
path('admin/', admin.site.urls),
path('', index),
]
因为视图需要指定:HttpResponse,其基类或者子类作为输出的格式
通过该方式就可以正常显示了
views.py初体验
在views内定义视图,从url中显示
views
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def book(request):
return HttpResponse('图书馆首页')
urls
from django.contrib import admin
from django.urls import path
#from django.http import HttpResponse
from book import views
urlpatterns = [
path('admin/', admin.site.urls),
# path('', index),
path('book/',views.book),
# 注:django不需要写成 /book/,不能写成 book,那样会出错的,因为打开浏览器时会自动给加上的
]
结果:
过程:
从views定义视图,从urls调用视图和定义路由,从网页打开路由显示,然后完成
django工程的debug选项位置
debug选项在测试环境是需要的,但是在生产环境是要去掉的,不能给客户暴露代码问题
位置:工程内的settings文件内的debug选项默认为True,需要时可以改成False
pip 批量导出和按表批量安装
背景:在开发中一般为一个项目使用一个虚拟空间,但是如果两个都是flask项目或者都是django项目,我们在之前进行过这个项目的整体搭建,该安装的包都装上了,再开一个新的虚拟环境,我还要再次重复这个过程:头大,
于是,我们可以采用批量安装的方式进行操作
参考了文章:http://blog.youkuaiyun.com/weixin_41287692/article/details/89314399
pip freeze 查询各种安装包的版本, > 重定向到requirements文本,文本名字可以是其他的
在旧的环境执行
pip freeze > requirements.txt
将该文件放入新建的虚拟环境下
安装导出的各种安装包, -r 表示逐行读取安装
执行
pip install -r requirements.txt
即可实现“环境的迁移”