1. 环境准备
- 开发环境:windows 11
- 先安装好miniconda3。镜像地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
选择windows 64位下载。 下载地址: https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Windows-x86_64.exe - 傻瓜式安装。然后配置镜像https://mirror.tuna.tsinghua.edu.cn/help/anaconda/
- 使用
conda
创建python3.6
环境
第一次安装conda create --name py36 python=3.6
conda
需要使用命令conda init
- 安装
django=1.11
conda activate py36 conda install django=1.11 # 或者通过pip pip3 install django==1.11.11
- 验证环境是否成功。每次使用 django 等相关命令都需要激活py36环境。
$ conda activate py36
$ django-adminType 'django-admin help <subcommand>' for help on a specific subcommand.Available subcommands:[django]checkcompilemessagescreatecachetabledbshelldiffsettingsdumpdataflushinspectdbloaddatamakemessagesmakemigrationsmigraterunserversendtestemailshellshowmigrationssqlflushsqlmigratesqlsequenceresetsquashmigrationsstartappstartprojecttesttestserver
Note that only Django core commands are listed as settings are not properly configured (error: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.).
环境准备完成。
2. django 基本操作
1. 命令行操作方式
# 1.创建django项目"""你可以先切换到对应的D盘 然后再创建"""django-admin startproject mysitemysite文件夹manage.pymysite文件夹__init__.pysettings.pyurls.pywsgi.py# 2.启动django项目"""一定要先切换到项目目录下 cd /mysite"""python manage.py runserver# http://127.0.0.1:8000/# 3.创建应用(具体的业务)
"""
Next, start your first app by running python manage.py startapp [app_label].
"""python manage.py startapp app01应用名应该做到见名知意userorderweb...
主要文件介绍
-mysite项目文件夹--mysite文件夹---settings.py 配置文件---urls.py 路由与视图函数对应关系(路由层)---wsgi.py wsgiref模块(不考虑)--manage.py django的入口文件--db.sqlite3 django自带的sqlite3数据库(小型数据库 功能不是很多还有bug)--app01文件夹---admin.py django后台管理---apps.py 注册使用---migrations文件夹 数据库迁移记录---models.py 数据库相关的 模型类(orm)---tests.py 测试文件---views.py 视图函数(视图层)
2. pycharm 创建项目
3. 命令行与pycharm创建的区别
# 1 命令行创建不会自动有templatew文件夹 需要你自己手动创建而pycharm会自动帮你创建并且还会自动在配置文件中配置对应的路径
# pycharm创建
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, 'templates')]
]
# 命令行创建
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [],
]
"""
也就意味着你在用命令创建django项目的时候不单单需要创建templates文件夹还需要去配置文件中配置路径
'DIRS': [os.path.join(BASE_DIR, 'templates')]
"""# 2. 注册应用
***********************创建的应用一定要去配置文件中注册**********************
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','app01.apps.App01Config', # 全写'app01', # 简写
]
# 创建出来的的应用第一步先去配置文件中注册 其他的先不要给我干
ps:你在用pycharm创建项目的时候 pycharm可以帮你创建一个app并且自动注册
4. 小试牛刀
# 1. 创建应用 app01。并在study_web01目录下的setting.py文件中进行注册。# 2. 在urls.py文件
from django.conf.urls import url
from django.contrib import adminfrom app01 import viewsurlpatterns = [url(r'^admin/', admin.site.urls),url(r'index/', views.index),url(r'login/', views.login),
]# 3. 在app01.views 文件中
from django.shortcuts import render, HttpResponse, redirect# Create your views here.
def index(request):# request 请求相关的所有数据对象# return HttpResponse("hello world")# return render(request, 'first.html')# return redirect('https://www.baidu.com') # 可自动跳转到其他地址,也可跳转自己项目的其他路由return redirect('/login')def login(request):return HttpResponse("login")"""
总结:
HttpResponse返回字符串类型的数据render返回html文件的 (需要在 templates中增加对应的html文件)redirect重定向return redirect('https://www.baidu.com/')return redirect('/home/')
"""
3. 静态文件配置
- 我们将html文件默认都放在templates文件夹下
- 我们将网站所使用的静态文件默认都放在static文件夹下
- django默认是不会自动帮你创建static文件夹 需要你自己手动创建
"""
一般情况下我们在static文件夹内还会做进一步的划分处理-static--js--css--img其他第三方文件
"""
1. 配置静态资源存放路径
# 在settings.py 文件中
STATIC_URL = '/static/' # 类似于访问静态文件的令牌
"""如果你想要访问静态文件 你就必须以static开头"""
"""
/static/bootstrap-3.3.7-dist/js/bootstrap.min.js/static/令牌
取列表里面从上往下依次查找bootstrap-3.3.7-dist/js/bootstrap.min.js都没有才会报错
"""
# 静态文件配置,在此新增以下代码
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static'),
]# 在html文件进行引用静态文件
<link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
<script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
2. 静态文件动态解析
# settting.py 文件不做改动。只需要修改html中引用静态文件的地方
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
4. request对象基本操作
1. 获取请求方法
# request.method
# 返回请求方式 并且是全大写的字符串形式 <class 'str'>
2. 获取请求参数
# 获取用户数据
# print(request.POST) # 获取用户提交的post请求数据(不包含文件)
# <QueryDict: {'username': ['jason'], 'password': ['123']}>
username = request.POST.get('username')
print(username, type(username)) # tom <class 'str'>
# get方法 只会获取列表最后一个元素# getlist 获取完整的列表
username = request.POST.getlist('username')
hobby = request.POST.getlist('hobby')
# ['tom'] <class 'list'>
# ['111', '222', '333'] <class 'list'>
总结
"""
request.method # 返回请求方式 并且是全大写的字符串形式 <class 'str'>
request.POST # 获取用户post请求提交的普通数据不包含文件request.POST.get() # 只获取列表最后一个元素request.POST.getlist() # 直接将列表取出
request.GET # 获取用户提交的get请求数据request.GET.get() # 只获取列表最后一个元素request.GET.getlist() # 直接将列表取出
"""