Django入门1
# 02 Django入门1
一. 注意事项
1. 如何让你的计算机能够正常的启动django项目
计算机的名称不能有中文. 我的电脑->属性->计算机名
2. 一个pycharm窗口只开一个项目.
3. 项目里面所有的文件也尽量不要出现中文
4. python解释器尽量使用3.4~3.6之间的版本
项目排错提示: 如果你的项目报错 你点击最后一个报错信息 去源码中把逗号删掉
2. django版本问题
LTS: 全称 Long Term Support 官方维护的版本
版本推荐: 1.8(2015) 1.11(2018) 2.2(2019)
Copy1.X 2.X 3.X(直接忽略)
1.X和2.X本身差距也不大 主要以1.X为例 会明与2.X区别
启示语录: 公司之前用的1.8 满满过渡到了1.11版本 有一些项目用的2.0
3. django安装
国内清华源安装:
Copypip3 install django==1.11.11 -i https://pypi.douban.com/simple
提示: 如果已经安装了其他版本 无需自己卸载直接重新装 会自动卸载安装新的
排错: 如果报错 看看是不是timeout 如果是 那么只是网速波 重新安装即可
验证是否安装成功的方式:
1. 终端输入django-admin看看有没有反应
2. 进入python交互式命令行
>>> import django
>>> django.get_version();
'1.11.11'
运行django-admin命令报错Fatal error in launcher: Unable to create process using
# 运行django-admin创建django项目时报错
G:\Django
$ django-admin -v
Fatal error in launcher: Unable to create process using '"'
# 之前我win10崩了, 重新安装了系统, 导致很多命令都没法用了先卸载django
pip uninstall django
# 然后重新安装django
pip3 install django==1.11.11 -i https://pypi.douban.com/simple
# 提示: 如果pip命令也出现错误Fatal error in launcher: Unable to create process using, 那么更新pip命令
python -m pip install --upgrade pip
二. django基本操作
1. 命令行操作
第一步: 创建django项目
Copy# 提示: 这种创建是创建到当前文件夹下, 如需创建指定文件夹需要切换到指定文件夹下再执行这条命令
django-admin startproject 项目名
第二步: 启动django项目
Copy'''一定要先切换到项目目录下'''
python3 manage.py runserver # runserver后面跟要绑定ip和端口. ip不指定默认使用本机环回地址, 端口8000. 可以 --/ 查看命令具体使用方法.
# 上面启动了django以后, 在浏览器中输入开启所指定的ip:port访问页面内容出现如下一句话
Next, start your first app by running python manage.py startapp [app_label].
第三步: 创建应用
Copy# 创建应用
python3 manage.py startapp app01 # app01 应用名应该做到见名知意
2. pycharm操作
第一步: 创建django项目
在创建项目时指定Application可以创建一个, 且同时也会在settings.py配置文件中INSTALLED_APPS中注册.
第二步: 启动django项目
第三步: 创建应用 (快捷键 crtl+alt+r)
第四步: 修改端口号以及创建server
没有配置时:
三. 应用
1. 创建的app介绍
django是一款专门用来开发app的web框架
django框架就类似于是一所大学(空壳子)
app就类似于大学里面各个学院(具体功能的app)
比如开发淘宝
订单相关
用户相关
投诉相关
创建不同的app对应不同的功能
选课系统
学生功能
老师功能
一个app就是一个独立的功能模块
2. 创建的应用一定要去setting.py配置文件中找到INSTALLED_APPS进行注册
CopyINSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01.apps.App01Config', # 注册全写
'app01', # 注册简写
]
3. 补充: 你在用pycharm创建项目的时候 pycharm可以帮你创建一个app并且自动注册
四. 目录结构
1. 目录结构介绍
mysite/
├── manage.py # 管理文件. django的入口文件
├── mysite # 项目目录
├── __init__.py
├── settings.py # 配置
├── urls.py # 路由和视图函数的对应关系(路由层)
└── wsgi.py # runserver命令就使用wsgiref模块做简单的web server
├── db.sqlite3 # django自带的sqlite3数据库(小型数据库 功能不是很多还有bug)
└── app01 # 应用目录
├── migrations # 数据库迁移记录
└── __init__.py
├── __init__.py
├── admin.py # django后台管理
├── apps.py # 注册使用
├── models.py # 数据库相关的 模型类(orm)
├── test.py # 测试文件
└── views.py # 视图函数(视图层)
2. setting.py文件介绍
BASE_DIR | 项目目录 |
---|---|
DEBUG | 上线之后改为False. |
ALLOWED_HOSTS | 允许访问的主机. 上线之后可以写* . 星号表示所有 |
INSTALLED_APPS | 注册的app. (app就是功能模块) |
MIDDLEWARE | Django中简件 |
TEMPLATES | HTML文件存放路径配置 |
DATABASES | 项目指定的数据库 |
LANGUAGE_CODE | 文字编码 |
TIME_ZONE | 时间 |
五. 命令行与pycharm创建django项目的区别
用命令行创建django项目: 用命令行创建django项目不会自动创建templates文件夹. 并且也不会自动配置templates文件夹路径, 需要你手动到setting.py配置文件中找到TEMPLATES在DIRSkey对应的[]中加上os.path.join(BASE_DIR, 'templates')
用pycharm创建django项目: 会自动创建并且自动配置路径, 还可以自动帮你创建一个应用并且自动注册, 不过只能在创建项目的时候创一个, 后续的应用(app01)创建需要手动到settings.py配置文件中找到INSTALLED_APPS中添加app01.apps.App01Config 或者 app01
TEMPLATES2者对比示例:
Copy# 命令行创建不会自动有templates文件夹 需要你自己手动创建, 而pycharm会自动帮你创建并且还会自动在setting.py配置文件中找到TEMPLATES配置对应的路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# pycharm创建
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
...
]
# 命令行创建
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
...
]
六. django小白必会三板斧
1. 基本使用
三板斧: HttpResponse,render,redirect
Copyfrom django.shortcuts import HttpResponse,render,redirect
# 一. 返回字符串类型的数据
return HttpResponse('字符串')
# 二. 返回HTML文件
# 1. 动态HTML页面:
return render(request,'login.html')
def ab_render(request):
# 视图函数必须要接受一个形参request
user_dict = {'username':'jason','age':18}
# 2. 动态HTML页面
'''
动态HTML页面的2种模板语法传值方式
1) 'data': user_dict
user_dict: 指定需要传给HTML文件的数据
data: 在HTML页面中操作的变量
2) locals会将所在的名称空间中所有的名字全部传递给html页面
传递给html页面的数据这里不仅仅是user_dict, 还有request
'''
# 第一种传值方式: 更加的精确 节省资源
return render(request,'01 ab_render.html', {'data':user_dict,'date':123})
# 第二种传值方式: 当你要传的数据特别多的时候
return render(request,'01 ab_render.html',locals())
# 三. 重定向
# 1. 返回他人的网址的重定向
: return redirect('https://mzitu.com')
# 2. 返回自己的网址的重定向
return redirect('/index/')
2. 实例
Copy'''views.py文件代码'''
from django.shortcuts import HttpResponse, render, redirect
# Create your views here.
"""
# urls.py文件
url(r'^admin/', admin.site.urls),
url(r'http_response_data/', views.http_response_data),
url(r'render_data/', views.render_data),
url(r'redirect_other/', views.redirect_other),
url(r'redirect_self/', views.redirect_self),
url(r'book_manage/', views.book_manage),
"""
def http_response_data(request):
"""
HttpResponse 内部传入一个字符串参数,返回给浏览器。
:param request: 请求相关的所有数据对象 比你之前的env更加牛逼.
之前的env放的是一个大字典, 而我们可以对request使用对象的操作方式`request.`
:return:
"""
print(request.__dict__) # {..., 'PATH_INFO': '/http_response_data/', ...}
print(request.path_info) # '/http_response_data/'
return HttpResponse('返回字符串的数据!')
def render_data(request):
"""
返回HTML文件
:param request:
:return:
"""
return render(request, 'login.html')
def redirect_other(request):
"""
重定向. 返回他人的网址的重定向
:return:
"""
return redirect('https://www.mzitu.com')
def redirect_self(request):
"""
重定向. 返回自己的网址的重定向
:param request:
:return:
"""
return redirect('/book_manage')
def book_manage(request):
return render(request, 'book_manage.html')
七. 总结
Copy# 4大注意事项:
1. 计算机名称不能有中文
2. pycharm一个窗口开一个项目
3. 项目文件夹不要出现中文
4. 解释器版本使用3.4~3.6
如果项目报错点击最后一条报错信息, 去除源码中的逗号
# Django版本使用
1xx 2xx 3xx
使用LTS官方长时间支持的版本版本: 1.8 1.11 2.2
# Django安装: 再次安装会覆盖(配置了环境变量)
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django=1.11.11
报错timeout是网速问题
# 检测安装成功: (配置了环境变量)
终端: django-admin
交互式命令行:
import django
django.get_version()
# Django基本操作
# 命令行操作
创建django项目: django-admin startproject 项目名
启动django项目: python3 manage.py runserver
创建应用: python3 manage.py startapp 应用名
# pycharm操作
创建django项目: new project -> Django -> Location,Existing Interpreter,create
启动django项目:
创建应用:
ctrl+alt+r -> startapp 应用名.
在创建项目时指定Application可以创建一个, 且同时也会在settings.py配置文件中INSTALLED_APPS中注册.
# 应用: 是一个具有具体功能的app, 是一个独立的功能. 例如: 选课系统
!!!注意!!!: 创建应用时一定要去settings.py文件中找到INSTALLED_APPS中注册.
注册的2种写法: app01.apps.App01Config 或者 app01
# 目录结构:
mysite
__init__.py
manage.py # Django启动入口
mysite
__init__.py
settings.py # 配置文件
urls.py # 路由与视图函数对应关系
wsig.py # runserver命令就是使用wsgiref模块做的简单的web服务器
db.sqlite3 # Django自带的小型数据库
app01
migrations # 数据库迁移记录
__init__.py
__init__.py
admin.py # django后台管理
apps.py # 注册使用
models.py # 数据库相关的模型类 ROM
views.py # 视图函数
test.py # 测试文件
app....
# settings.py文件
BASE_DIR 项目目录
INSTLLED_APPS 注册的app
TEMPLATES HTML文件路径
ALLOWED_HOSTS 允许访问的主机
# 命令行与pycharm创建django项目的区别
1. 命令行创建没有templates文件, 需要自己创建, 并到settings.py中找到TEMPLATES文件添加os.path.join(BASE_DIR, 'templates').
2. 除了使用pycharm创建django时指定一个APPlication, 不需要到settings.py中找到INSTLLED_APPS中注册app, 都需要去注册.
# django小白三板斧
from django.shortcuts import HttpResponse, render, redirect
return HttpResponse(指定返回的字符串) # 返回字符串
return render(request, 指定返回的html在templates中的文件名) # 返回HTML文件 静态
return render(request, 指定返回的html在templates中的文件名, {'user': user_list}) # 动态方式1
return render(request, 指定返回的html在templates中的文件名, locals()) # 动态方式2
return redirect('https://www.baidu.com') # 重定向他人网址
return redirect('/index') # 重定向自己网址