Django基础
-
Django安装
pip install Django==2.2.12
-
创建Django项目
-
命令行中创建项目
# 切换到准备存储Django项目的路径 cd <Django项目的存储路径> # 创建项目 django-admin startproject <项目名称>
-
Pycharm中创建项目(推荐,只有专业版的Pycharm才支持WEB开发)
file -> New Project -> Django -> Project Interpreter:New Virtualenv environment ->勾选 Existing interpreter(已经存在的解释器)-> Interpreter选择Python解释器版本 -> 点击Create -> open in new window
-
-
Django项目的目录结构
-
Django项目名称目录
__init__.py
:表示该文件夹可以被导入。-
settings.py
:Django项目系统配置文件。import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'p#%=itzh^ope9)=rdjy%^yn@@$y_$1x91*3)xn((*#13o+(r8_' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = [] # Application definition # 新建APP之后,一定要告诉Django新建了APP INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app.apps.AppConfig', # 将新建的APP添加进来 ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', # 学习Django阶段先把这行注释掉 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'Django.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')] , 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] WSGI_APPLICATION = 'Django.wsgi.application' # Database # https://docs.djangoproject.com/en/2.2/ref/settings/#databases # 数据库相关的配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } # Password validation # https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] # Internationalization # https://docs.djangoproject.com/en/2.2/topics/i18n/ LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/2.2/howto/static-files/ # 静态文件夹的别名 STATIC_URL = '/static/' # 配置静态文件路径,所有静态文件(css/js/图片)都放在static文件夹中 STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static") ]
-
urls.py
:用来管理项目的url资源的文件(URL和函数的对应关系),项目中用到的URL地址都需要我们去配置。from django.contrib import admin from django.urls import path from app import views urlpatterns = [ path('admin/', admin.site.urls), path('login/', views.login), # 将业务函数的对应关系添加到这里 ]
views.py
:需要手动创建,wsgi.py
:Python服务器网关接口,是Python应用与Web服务器之间的接口。
manage.py:是与项目进行交互的命令行工具集的入口。
templates文件夹:存放HTML的文件夹(需要在
settings.py
中告诉Django去哪儿找这些HTML文件)-
static文件夹:需要手动创建。用于存放bootstrap、fontawesome、jquery、图片等。也需要在
settings.py
中告诉Django去哪儿找这些文件)# 静态文件保存路径的别名 STATIC_URL = '/static/' # 所有的bootstrap、fontawesome、jquery等静态文件都放在static文件夹中 STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), '/var/www/static/', ]
-
app文件夹:需要手动创建。
- migration文件夹
-
__init__.py
:表示该文件夹可以被导入。 -
admin.py
: -
apps.py
:存放app相关的配置项。 -
models.py
: -
tests.py
:用于测试 -
views.py
:主要存放页面对应关系的业务逻辑(所有定义的函数都必须要带有request参数,request参数保存了所有和用户浏览器请求相关的数据)。
-
-
启动Django项目
-
命令行启动
# 进入manage.py所在的文件夹 cd <manage.py的路径> # 启动manage.py,如果不写IP地址和端口,默认从本机的8000端口启动服务 python3 manage.py runserver <IP地址>:<端口号>
在Pycharm中启动Django项目
-
-
Django基础必会三件套
-
HttpResponse
:内部传入一个字符串参数,返回给浏览器。# 在views.py文件中,导入HttpResponse from django.shortcuts import HttpResponse def index(request): # 业务逻辑代码 return HttpResponse("OK")
-
render
:除接收request参数外,还可以接收一个待渲染的模板文件和一个保存具体数据的字典参数。将数据填充进模板文件,最后把结果返回给浏览器。
def index(request): # 业务逻辑代码 return render(request, "index.html", {'error': error_msg})
-
redirect
:接受一个URL参数,表示跳转到指定的URL(URL重定向)。def index(request): # 业务逻辑代码 return redirect("/home/")
-
-
Django中的APP
一个Django项目可以分为很多个APP,用来隔离不同功能模块的代码。
-
使用系统命令行创建APP
# 进入Django项目的根目录 cd <Django项目路径> # 创建创建Django的APP python manage.py startapp <APP名称>
使用Pycharm创建APP
-