Python--第三阶段--Django

Django安装

Django安装就是在终端输入:(这个是在豆瓣的镜像去下载,当然不怕慢的话,可以直接pip install django)
	pip install -i https://pypi.douban.com/simple django [==版本号]
	版本号不写的话下载的就是最新的版本,常用的版本1.11.8(长期稳定版Python3.6以下版本支持),2.2(长期稳定版Python3.7及以上),3.2(测试版本)

*********************************************************************windows系统忽略

Linux下可以建立虚拟环境来创建Django项目,我没有测试成功,所以现在先空着不写,需要安装两个模块:virtualenv、virtualenvwrapper
 	虚拟环境
	作用
		搭建独立的Python项目运行环境,单个项目的运行环境与其他项目互不影响
	安装 
		```powershell
		pip install --upgrade pip 
		pip install virtualenv
		pip install virtualenvwrapper
		```
	修改配置文件
		```powershell
		>> sudo find / -name virtualenvwrapper.sh
		>> vi ~/.bashrc
		>> source ~/.bashrc
		
		export VIRTUALENVWRAPPER=/usr/bin/python3
		export WORKON_HOME=$HOME/.virtualenvs 
		export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
		source ~/.local/bin/virtualenvwrapper.sh
		```
 	创建虚拟环境
		```powershell
		mkvirtualenv [虚拟环境名称]
		```
	切换到某个虚拟环境
		```powershell
		workon [虚拟环境名称]
		```
	退出当前虚拟环境
		```powershell
		deactivate
		```

*******忽略结束

Django项目整体了解

创建项目

在项目目录下打开终端,或者通过终端cd到项目目录,然后运行:
	django-admin startproject 项目名(项目名必须符合变量命名规则)

启动项目

在项目manage.py文件夹所在的目录里,打开终端,输入:
	python manage.py runserver [ip:port]/[port]  
	 # 如果没有输入ip和端口号,默认为127.0.0.1:8000,只输入端口号则只改变端口号,如果全都输入,则为输入的ip和端口号。这里的ip必须是本地的ip(127.0.0.1或者网卡IP)

项目目录

项目目录概览
这时候会在项目目录下生成一个项目名的文件夹,这个文件夹里面包含了项目所有必要的文件和设置:

原生的项目目录

在目录中:
	创建templates文件夹,先不要问为什么,这个文件夹用来存储模板文件,html文件等;
	创建static文件夹,这个文件夹用来存储静态文件,当然可以在static文件夹中继续分类创建img、css、js文件夹分别用于存储相应类型的文件;
	在mysite目录下的mysite文件夹里创建views.py文件,用来存放视图函数。

在这里插入图片描述

mysite文件夹里面的文件:
当然,项目名不同,文件名也不都叫mysite,只是我自己建的叫mysite

__init__.py
项目初始化文件,现在有啥用还不知道,就是项目跑起来它就已经运行了...........

asgi.py
略过.......

wsgi.py
用于项目部署,只在部署的时候使用,听说只要存在就行.....

urls.py
路由文件,匹配网址和视图之间的关系文件(也就是哪个指定哪个url访问哪个view),每个应用文件夹里必须有————————很重要

views.py
视图函数存放文件,每个应用里都要有。

settings.py
	项目设置文件,包括:
	1. 项目路径:
		BASE_DIR = Path(__file__).resolve(strict=True).parent.parent  # 设置最外的mysite文件夹为项目主目录,一般不会修改。
	2. SECRET_KEY:
		SECRET_KEY = 'qg^6)viw&d1-8k2p+!aa_)lbod5=%ck5r2ne(6crjkv@*7b(96'
	3. 测试:
		DEBUG = True  # 是否测试模式.....更多需要继续学习
	4. 访问白名单(就是允许哪些地址访问,一般是*):
		ALLOWED_HOSTS = ['*']  # 列表,列表中可以存放IP地址字符串,或者*,*代表任何地址都可访问,如果没有内容则说明只有本地能访问。
	5. 安装的应用(这个涉及到应用,后面会说):将应用写入列表就,安装应用
		INSTALLED_APPS = [
	    'django.contrib.admin',
	    'django.contrib.auth',
	    'django.contrib.contenttypes',
	    'django.contrib.sessions',
	    'django.contrib.messages',
	    'django.contrib.staticfiles',
	]
	6. 中间件设置:
		MIDDLEWARE = [
	    'django.middleware.security.SecurityMiddleware',
	    'django.contrib.sessions.middleware.SessionMiddleware',
	    'django.middleware.common.CommonMiddleware',
	    'django.middleware.csrf.CsrfViewMiddleware',
	    'django.contrib.auth.middleware.AuthenticationMiddleware',
	    'django.contrib.messages.middleware.MessageMiddleware',
	    'django.middleware.clickjacking.XFrameOptionsMiddleware',
	]
	7. ROOT_URLCONF:设置默认路由文件
		ROOT_URLCONF = 'mysite.urls'
	8. 模板设置:
		TEMPLATES = [
	    {
	        'BACKEND': 'django.template.backends.django.DjangoTemplates',
	        'DIRS': [Path.joinpath(BASE_DIR, 'templates')],  # 设置模板路径,我们之前新建了template文件夹,所以指定就可以了
	        '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',
	            ],
	        },
	    },
	]
	9. 项目部署设置:
		WSGI_APPLICATION = 'mysite.wsgi.application'
	10. 数据库设置:默认是用的sqlite数据库,可以修改为mysql数据库等;
		DATABASES = {
	    'default': {
	        'ENGINE': 'django.db.backends.sqlite3',
	        'NAME': BASE_DIR / 'db.sqlite3',
	    }
	}
	11. 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',
	    },
	]
	12. 项目语言、时区:
		LANGUAGE_CODE = 'en-us'    # 默认是en-us,即英文,修改为中文zh-Hans
		TIME_ZONE = 'UTC'       # 时区设置,默认是世界标准时间'UTC',中国时区为:"Asia/Shanghai"
		USE_I18N = True
		USE_L10N = True
		USE_TZ = True
	13. 静态文件:静态文件目录,包括图片、css文件、js文件等
		STATIC_URL = '/static/'
		STATICFILES_DIRS = [Path.joinpath(BASE_DIR, 'static')]  # 默认没有这个设置,这个是指定静态文件的存放目录
db.sqlite3文件
数据库文件,后面会进行更改和设置。这不做过多的解释,可以更换为mysql数据库等其他数据库
manag.py文件
这个文件是Django的主项目文件,运行Django项目就是用这个文件运行
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys

def main():
    """Run administrative tasks."""
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()
从代码内容我们能看到sys.argv是说明,这个函数运行时需要传参进去,这里可传的参数,我们在命令行里面输入python manage.py就可以列出,如下:

在这里插入图片描述

常用的命令参数有:
	1. 项目、应用相关:
	runserver:
		启动项目:python manage.py runserver [ip:port]/[port]  -----详见启动项目
	startapp:
		创建应用:python manage.py startapp 应用名 ------详见创建应用
	startproject
		创建项目:django-admin startproject 项目名 -----详见创建项目
	2. 用户管理相关(admin系统)------详见admin管理模块
	changepassword:
		修改管理用户密码
	createsuperuser
		创建管理员用户
	3. 数据库同步:------详见数据库模块
	makemigrations:
		创建同步文件:python manage.py makemigrations
	migrate:
		与数据库同步:python manage.py migrate
	4. 测试命令:
	shell:
		打开项目shell界面:python manage.py shell       ------打开项目shell界面,方便测试代码
	5. 是是是

路由和视图函数

视图函数(view)

作用:
	用于接收一个浏览器请求并通过HttpResponse对象返回数据的函数。此函数可以接收浏览器请求并根据业务逻辑返回相应内容给浏览器
语法:
	def xxx_view(request[,其他参数]):
		return HttpResponse对象
参数:
	request必须有,是用来接收请求的,这个请求有很多方法可以来使用,非常有用
示例:
def page1_view(request):
    html = '<h1>这是第一个页面</h1>'
    return HttpResponse(html)

URL路由(统一资源定位符)

URL一般的语法:
	protocol://hostname[:port]/path[?query][#fragment]
	eg:
		http://tts.tmooc.cn/video/showVideo?menuId=657421&version=AID201908#subject
protocol:协议 http协议
hostname:主机名 tts.tmooc.cn
port:端口号 http协议默认80端口,https协议默认443端口
path:路由  /video/showVideo
query:查询 menuId=657421&version=AID201908
fragment:信息片段

路由设置(urls.py)

路由设置是在urls.py文件里面,所以我们先看下这个文件
这个是3.2版本的Django的urls.py文件
from django.contrib import admin
from django.urls import path

from mysite import views   # 默认的没有,这个是为了调用视图函数引入的

urlpatterns = [
    path('admin/', admin.site.urls), # 应用中也有urls.py文件,也是这样设置
    path('',views.page1_view),
    path('bookstore/',include('apps.bookstore.urls')) # 连接到应用的路由文件中
]
3.2版本里已经没有了1.11.8版本的url方法,而是用path和re_path来代替,re_path的功能和url一样,path则必须完全匹配。

urlpatterns是路由列表,存放了Django的路由信息

path函数:
	语法:
		path(路由地址, 视图函数,names)
	参数:
		路由地址:直接写需要访问的路由地址即可,以字符串的形式。
		视图函数:调用views.py文件里的视图函数。
		names:可不写,默认为none,用来在Django的模板文件里调用路径
re_path函数:
	语法:
		re_path(路由地址正则表达式, 视图函数,names)
	参数:
		路由地址正则表达式:以正则表达式的方式确定路由地址。
		视图函数:调用views.py文件里的视图函数。
		names:可不写,默认为none,用来在Django的模板文件里调用路径
	传参:
		这里如果视图函数需要传参的话,可以在正则表达式里将需要传的参数进行分组后,会自动传给视图函数

前端往后端传参的方式

路由用正则的带有分组传参

分组的正则表达式可以将每个分组里匹配的值传给视图函数,所以,有多少分组,视图函数就要有多少个参数接收

url.py文件的urlpatterns里,添加路由
	re_path(r'^page(\d+)$',views.page_view)

views.py文件里添加视图函数:
	def page_view(request,num):
	    html = f'这是第{num}页'
	    return HttpResponse(html)

这时候我们访问:127.0.0.1:8000/page1
返回的页面如下:

在这里插入图片描述

GET请求传参

POST请求传参

  1. 模板文件index_test.html里用form形式提交相应的参数
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
    <form method="post" action="/index">
        <label>用户名:</label>
        <input type="text" name="userid">
        <input type="submit" value="提交">
    </form>
</body>
</html>
  1. views.py视图函数中判断是什么形式的请求,再用request.POST.get获取参数值
from django.http import HttpResponse
from django.shortcuts import render
# Create your views here.
def index_view(request):
    if request.method =='GET':
        return render(request,'index_test.html')
    elif request.method == 'POST':
        userid = request.POST.get('userid','错误的用户名')
        http = f'{userid}'
        return HttpResponse(http)
  1. urls.py路由文件中的设置
from . import views
urlpatterns = [
    path('/index/', views.index_view),
]

模板

模板加载和继承

模板变量标签

模板函数标签

模板的过滤器

静态文件

数据库操作

  1. 基本操作
  2. 关系映射
    一对一:
    代码形式:
    正向查询:
    反向查询:
    一对多:
    代码形式:
    正向查询:
    反向查询:
    多对多:

后台管理admin

1. 创建超级用户
2. 配置后台管理
	注册自己的应用:在应用的admin.py文件中加入:
		from . import models
		admin.site.register(models.Book)
	模型管理器类:
		在admin.py中新建一个类,定义类的属性改变admin界面展示
		list_display =
		list_display_link = 
		list_filter = 
		search_field = 
		list_editable =
3. 是是是

cookie和session

通过HttpResponse对象来获取和处理
1. 添加和修改cookie
	resp = HttpResponse()
	resp.set_cookie('key',value,max_age=秒,[expires='2020-09-08']) # max_age和expires只能设置一个
	return resp
2. 删除cookie
	resp.delete_cookie('key')
3. 获取cookie
	request.COOKIES['key']
	request.COOKIES.get('key')
  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: lnh-课件代码python全栈3期是指由某个机构或教育平台提供的关于Python全栈开发的第三期课程。在该课程中,学员将学习和掌握Python编程语言及其相关的全栈开发技术。 首先,在课程开始时,学员将学习Python编程的基础知识,包括语法、数据类型、变量、控制流等等。学员将通过理论讲解和实践编程练习,逐步掌握Python的基本概念和编程技巧。 接着,课程将引导学员学习Python的Web开发框架,如Django等。学员将学会使用这些框架搭建和开发功能强大的Web应用程序,并了解前后端的交互原理。通过项目实践,学员将学会如何设计数据库、处理用户输入、处理表单和实现用户认证等等。 除了Web开发,课程还会涉及其他Python相关的技术,如爬虫、数据处理、数据可视化、机器学习等等。学员将学习如何使用Python进行数据抓取和处理,并将学到的知识应用于实际项目中。 在课程的最后阶段,学员将有机会进行一个完整的项目实践,将之前学到的知识应用到一个真实的项目中。这个项目将涵盖从需求分析、系统设计、开发、测试到部署等全过程,帮助学员加深对Python全栈开发的理解和实践能力。 总而言之,lnh-课件代码python全栈3期是一门旨在帮助学员全面掌握Python全栈开发技术的课程。通过系统的学习和实践,学员将能够独立完成一个完整的Python全栈项目,并具备进一步深入学习和实践的基础。 ### 回答2: lnh-课件代码是Python全栈3期课程的代码库。在这个代码库中,我们可以找到与课程相关的所有代码示例和案例。 这个代码库是为了帮助学员更好地学习和理解课程内容而创建的。在Python全栈3期课程中,我们将学习如何利用Python语言来构建全栈应用程序,涵盖了从前端开发到后端开发的所有关键知识点。 在lnh-课件代码中,我们可以找到各种不同的文件和文件夹。这些文件和文件夹包括课程中所涵盖的各个主题和模块,例如HTML、CSS、JavaScript、Flask、Django等。每个文件和文件夹都包含了与该主题相关的代码示例和案例。 通过查看lnh-课件代码,学员可以更好地理解课程中所讲述的理论知识,并且能够将其应用于实际的项目中。这样,学员可以更好地掌握Python全栈开发的技能,提升自己在职业生涯中的竞争力。 总而言之,lnh-课件代码是Python全栈3期课程的代码库,包含了与课程内容相关的所有代码示例和案例。通过使用这个代码库,学员可以更好地学习和理解课程内容,并应用于实际项目中。 ### 回答3: lnh-课件代码python全栈3期是一门针对Python全栈开发的课程。这门课程旨在教授学员使用Python语言进行全栈开发,涵盖从前端到后端的所有内容。 在这门课程中,学员将学习使用Python编写前端代码,包括HTML、CSS和JavaScript,掌握前端开发的基本概念和技术。 同时,学员还将学习使用Python开发后端代码,包括使用框架如Django或Flask进行Web应用程序的开发,以及数据库的设计和管理。 此外,该课程还将重点介绍如何进行系统部署、性能优化以及安全防护等方面的知识,以帮助学员全面打造一个完整的Python全栈应用程序。 该课程将提供大量的实践项目,让学员能够通过实际操作来巩固自己所学的知识。此外,还会有针对性的练习和作业,以确保学员能够灵活应用所学的知识。 授课老师将是经验丰富的专业人士,在教学过程中将提供详细的实例和案例,帮助学员更好地理解和应用所学的内容。 总之,lnh-课件代码python全栈3期是一门集中教授Python全栈开发技术的课程,通过系统地学习,学员能够掌握使用Python开发全栈应用程序的能力,并在实践中不断提升自己的技术水平。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值