django框架初识

python三大主流web框架

django

  • 特点:大而全,自带的功能特别特别特别的多
  • 不足:有时候过于笨重,造航空母舰的人去拧螺丝

flask

  • 特点:小而精 自带的功能特别特别特别少,但是第三方的模块特别特别特别多,如果将flask第三方的模块加起来完全可以盖过django,并且也越来越像django

  • 不足:比较依赖第三方的开发者

tornado

  • 特点:异步非阻塞,支持高并发,甚至可以开发游戏服务器
  • 不足:。。。。我不会/(ㄒoㄒ)/~~

三者与自定义框架的区别

A:socket部分
B:路由与视图函数对应关系(路由匹配)
C:模版语法

django
  A用的是别人的		wsgiref模块
  B用的是自己的
  C用的是自己的(没有jinja2好用 但是也很方便)

flask
  A用的是别人的		werkzeug(内部还是wsgiref模块)
  B自己写的
  C用的别人的(jinja2)

tornado
	A,B,C都是自己写的

django初识

注意事项

如何让计算机能够正常的启动django项目

  • 计算机的名称中不能有中文
  • 一个pycharm窗口只开一个项目
  • 项目里所有的文件名尽量不要出现中文
  • python解释器尽量使用3.4-3.6版本,(如果你的项目报错 你点击最后一个报错信息
    去源码中把逗号删掉)

django版本选择

1.x 2.x 3.x(直接忽略)

1.X和2.X本身差距也不大 我们讲解主要以1.X为例 会讲解2.X区别
(面试小技巧:公司之前用的1.8 满满过渡到了1.11版本 有一些项目用的2.0)

django安装

pip insatll django==1.11
  • 如果已经安装了其他版本,无需自己卸载,直接重新安装就会自动卸载旧的安装新的
  • 如果报错timeout,只是网速波动
  • 验证是否安装成功的方式:终端输入django-admin看看有没有反应

django基本操作

命令行操作

  • 创建django项目
- 默认创建在c盘下,可以先切换到其他盘,然后再创建
- 切换目录
C:\Users\12801>E:
E:\>cd\django-pro

- 创建
django-admin startproject mysite
	创建的mysite文件夹下的文件
		-- manage.py
		-- mysite文件夹
		   -- __init__.py
		   -- setings.py
		   -- urls.py
		   -- wsgi.py
		   
- 启动django项目
E:\django-pro>cd\django-pro\mysite
E:\django-pro\mysite>python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
May 23, 2020 - 09:13:19
Django version 1.11.11, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[23/May/2020 09:13:34] "GET / HTTP/1.1" 200 1716
Not Found: /favicon.ico
[23/May/2020 09:13:34] "GET /favicon.ico HTTP/1.1" 404 1962

- 创建应用
# Next, start your first app by running python manage.py startapp [app_label].

E:\django-pro\mysite>python manage.py startapp app01
'''
应用名应该做到见名知意,创建的应用下会有多个文件
'''

pycharm操作

  • 创建项目,选择django即可

  • 启动项目

    • 命令行启动
    • 点击绿色小箭头
  • 创建应用

    • pycharm提供的终端输入完整命令
    • pycharm --- tools ---run manage.py task,然后输入startapp app2

django中的应用app

django是一款专门用来开发app的web框架

django框架就类似于是一所大学(空壳子)
app就类似于大学里面各个学院(具体功能的app)
	比如开发淘宝
		订单相关
		用户相关
		投诉相关
		创建不同的app对应不同的功能
	
	选课系统
		学生功能
		老师功能

一个app就是一个独立的功能模块

创建应用的注意事项

  • 创建的应用一定要去配置文件(settings)中注册
  • 创建应用第一步先去配置文件中注册!!!!!
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config', # 全写
    'app02', # 简写
]
# ps:在用pycharm创建项目的时候 pycharm可以帮你创建一个app并且自动注册,但是只是第一个

主要文件介绍

-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			视图函数(视图层)

命令行与pycharm创建django项目的区别

  • 命令行创建不会自动有template文件夹 需要你自己手动创建,而pycharm会自动帮你创建并且还会自动在配置文件中配置对应的路径,也就意味着你在用命令创建django项目的时候不单单需要创建templates文件夹还需要去配置文件中配置路径
    'DIRS': [os.path.join(BASE_DIR, 'templates')]
# pycharm创建
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',
            ],
        },
    },
]

# 命令行创建
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
]

django小白必会三板斧

HttpResponse

  • 定义视图函数时,返回字符串类型的数据
# views.py
def index(request):
    '''

    :param request: 请求相关的所有数据对象,比之前的env更厉害
    :return:HttpResponse(返回字符串至浏览器客户端)
    '''
    return HttpResponse('welcome my django!')
    
# urls.py
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/',views.index),
]

render

  • 定义视图函数时,返回HTML页面至浏览器客户端
def index(request):
    '''

    :param request: 请求相关的所有数据对象,比之前的env更厉害
    :return:render(request,'render_html.html'):第一个参数时request,第二个参数时html文档的名字,会自动去template文件夹中找html文档
    '''
    return render(request,'render_html.html')

redirect

  • 定义视图函数时,返回值会将页面进行重定向
def index(request):
    '''

    :param request: 请求相关的所有数据对象,比之前的env更厉害
    :return:redirect,会将网页重定向,可以重定向至网址,也可以重定向到自己项目中的路由(只需要写网页后缀即可)
    '''
    # return redirect('https://www.baidu.com')
    return redirect('/home/')
def home(request):
    return HttpResponse('我是自定义的')
posted @ 2020-05-23 11:27  微信搜索-程序媛小庄  阅读(217)  评论(0编辑  收藏  举报