zoukankan      html  css  js  c++  java
  • django框架入门

    django框架入门讲解

    一.注意事项

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

    1. 计算机名称不能有中文. --->我的电脑--> 属性 ---> 计算机名

    2. 一个pycharm窗口只能打开一个项目

    3. 项目里面所有的文件也尽量不要出现中文

    4. python解释器尽量使用3.4~3.6版本,不然超过了3.6在创建项目时会报错,

      ps:解决方案: 找到你的python3解释器下的libsite-packagesdjangocontribadmin文件下的152行,for循环内的,,去了.

    2.django版本问题

    img

    其中的LTS: 全称 Long Term Support 官方维护的版本

    版本推荐:1.8(2015),1.11(2018),2.2(2019)

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

    1.x 和 2.x的区别不大,主要还是义1.x为例,我们就以1.11来学习.

    千万别以后出去说你用的django版本是3.x的.这一看不就是新手吗,3.0的去年才出

    3.django安装

    pip3 install django==1.11.11 -i https://pypi.douban.com/simple

    -i 后面的属性为指定源地址为清华,国内的安装的快一点.

    ps: 如果安装了别的版本,无需卸载后重新安装,可以直接安装指定版本,会先给你卸了重新安装

    排错: 如果下载报错,可能是网络超时,重新下载即可,也有可能是pip的版本太低,可以更新一下后再下载.

    验证是否安装成功的方式

    1. 在cmd终端: pip list

      看看清单中,是否有安装django

    2. 在cmd进入python后

      import django

      print(django.VERSION)

      看看是否可以查看到版本

    3. 输入django-admin看看有没有反映

    运行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 '"'
    """
    1. 可以尝试卸载掉django,重新安装一下
    pip3 uninstall django
    pip install django==1.11.11 -i https://pypi.douban.com/simple
    
    2.提示: 如果pip命令也出现错误Fatal error in launcher: Unable to create process using, 那么更新pip命令
    python3 -m pip install --upgrade pip
    

    二. django基本操作

    1.命令行操作

    第一步: 创建django项目

    提示: 这种创建是创建到当前文件夹下,如需创建指定文件夹,需要先切换到指定的文件夹下再执行这条命令
    django-admin startproject 项目名(最好为英文)
    

    第二步: 启动django项目

    一定要先切换到项目目录下
    python3 manage.py runserver  # runserver后面可以接 ip+端口, 如果不指定默认为本地地址+8080 可以通过--/ 查看命令的具体使用方法
    
    上面开启成功后,就可以到浏览器中通过ip+端口访问到页面内容
    Next, start your first app by running python manage.py startapp [app_label].  
    

    第三步: 创建应用 app

    创建应用 app01
    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.创建的应用一定要去settings.py配置文件下找到INSTALLED_APPS进行注册

    ps: 使用pycharm创建的django,可以默认添加一个app,并且该app会自动添加到INSTALLED_APPS列表的最后

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01.apps.App01Config',  # 这个是标准的注册方式
        "app01",  # 可简写为app01 直接写名称
    ]
    

    四. 目录结构

    1.目录结构介绍

    mysite/
    |-- manage.py # 管理文件. django的人口文件
    |-- mysite  # 项目目录
    	|--  __init__.py  起始加载文件
        |-- settings.py  配置文件
        |-- urls.py   路由和视图函数的对应关系(路由层)
        |-- wsgi.py   runserver命令就使用wsgiref模块当做简单的web server
    |-- db.splites3  django自带的splites3数据库(小型数据库 功能不多还有bug)
    |-- app01   # 应用目录
    	|-- migrations   数据迁移记录
    		└-- __init__.py  数据迁移记录包的起始文件
    	|-- __init__.py
    	|-- admin.py   django后台管理
    	|-- models.py   数据库相关的 模型类 (orm)
    	|-- test.py   测试文件
    	|-- views.py    视图函数文件(视图层)
    

    2.settings文件介绍

    BASE_DIR 项目目录
    DEBUG 上线之后改为False
    ALLOWED_HOSTS 允许访问的主机,上线之后可以写*,星号表示所有
    INSTALLED_APPS 注册的app. (app就是功能模块)
    MIDDLEWARE Django中简件
    TEMPLASTES HTML文件存放路径配置
    DATABASES 项目指定的数据库
    LANGUAGE_CODE 文字编码
    TIME_ZONE 时间

    五.命令行和pycharm创建django项目的区别

    用命令行创建django项目:

    ​ 用命令行创建django项目不会自动创建templates文件夹,并且也不会自动配置settings.py中的templates路径,

    ​ 需要我们手动的去添加.找到settins.py配置文件中的TEMPLATES在DIRSkey对应的[]中加上 os.path.join(BASE_DIR, "templates")

    用pycharm创建django项目:

    ​ 会自动帮我们创建一个templates文件夹,并且会将该文件夹的路径添加到settings.py中的TEMPLATES下的DIRSkey对应的[]中.

    ​ 还可以选择自动添加一个app应用,该应用也会被自动添加到INSTALLED_APPS的注册列表中,但是之后在pycharm命令行中创建的需要手动添加.

    TLANPLATES 俩者对比

    # 命令行创建不会自动有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

    放到案例中介绍

    from django.shortcuts import render, HttpResponse, redirect
    
    
    # Create your views here.
    
    
    def index(request):
        # 一 HttpResponse方法内为字符串类型的数据
        return HttpResponse("字符串")
    
    
    # 二. 返回html文件
    # 1. 动态html页面
    def login(request):
        # 视图函数必须接收一个形参 request
        user_dict = {"username": "jkey", "age": 18}
    
        # 2. 动态html页面
        """
        动态html页面的俩种模板语法传值方式
        1) "data" : user_dict
            user_dict:指定需要传给html文件的数据
            data: 在html页面中传值的变量
            
        2) local会将所在的名称空间中所有的名字全部传递给html页面
            传递给html页面的数据这里不仅仅是user_dict,还有request
        """
        # 第一种传值的方式: 更加的精确 节省资源
        # return render(request, 'login.html', {'data': user_dict, "date": 11})
    
        # 第二种传值的方式: 当你要传的数据特别多时 locals
        return render(request, "login.html", locals())
    
    
    # 重定向
    # 1.返回自己网页的地址的重定向
    def error(request):
        return redirect("error.html")
    
    
    # 2. 返回网络上的地址的重定向
    def redis(request):
        return redirect('https://mzitu.com')
    

    实例

    urls.py

    """mysite1 URL Configuration
    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views
    
    urlpatterns = [
        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_data),
        url(r'^/redirect_self', views.redirect_self_data),
        url(r'^/book_manage', views.book_manage_data),
    ]
    

    views.py

    from django.shortcuts import render,HttpResponse,redirect
    
    # Create your views here.
    
    
    def http_response_data(request):
        """
        HttpResponse 内部传入一个字符串参数,返回给浏览器
        :param request: 请求相关的所有数据对象,比你之前的request更牛逼
                        之前的request是一个大字典,而我们这个request是一个对象,操作方法可以为`request.`
        :return: 返回给浏览器的字符串
        """
        print(request.__dict__)
        print(request.path_info)
        return HttpResponse("我是HttpResponse对象内的字符串")
    
    
    def render_data(request):
        """
        返回html文件
        :param request: 请求相关的所有数据对象
        :return:
        """
        return render(request,'login.html')
    
    
    def redirect_other_data(request):
        """
        重定向. 返回他人的网址的重定向
        :param request:
        :return:
        """
        return redirect("https://www.mzitu.com")
    
    
    def redirect_self_data(request):
        """
        重定向 到自己的页面
        :param request:
        :return:
        """
        return redirect('/index')
    
    def book_manage_data(request):
        """
        正常的返回html页面
        :param request:
        :return:
        """
        return render(request, 'book_manage.html')
    

    总结

    -- 1. 创建项目要注意的事项
    	-- 1.计算机名称不能有中文
        -- 2.pycharm一个窗口内只能有一个django项目
        -- 3.项目名称和应用名称最好为英文,不要写中文
        -- 4.解释器最好使用3.4-3.6 不然会出现报错,需要到 lib/site-packages/django/contrib/admin 下面的152行的,号去了
    
    -- 2. Django的版本使用
    	-- 1.x 或者 2.1 的
        -- 官方在维护的 1.8 1.11 2.2
        
    -- 3. Django的安装
    	-- 如果安装了,再安装会将原来的覆盖掉
        -- pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simle django==1.11.11
            
    -- 4. 检查安装是否成功
    	-- 1.pip list
        -- 2.import django
        		print(django.VERSION)
        -- 3.django-admin
    
    -- 5. Django的基本操作
    -- 命令行下
    	-- 创建项目
        	-- django-admin startproject 项目名
        -- 启动项目
        	-- python3 manage.py runserver
        -- 创建应用
        	-- python3 manage.py startapp 应用名
            
    -- pycharm下
    	-- 创建项目
        	-- New project 
           		-- 下面的django项目 --> localtion,Existing,Interpreter.create
        -- 启动项目. run 项目名
        -- 创建项目 ctrl+alt+r ---->startapp 应用名
        	-- 注意这里的app未在settings.py中的_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')  # 重定向自己网址
    
  • 相关阅读:
    [转] 疯狂的JSONP
    [转] ASP.NET MVC 模型绑定的功能和问题
    【JavaScript 从零开始】变量作用域
    【JavaScript 从零开始】 原始值和对象引用、类型转换
    【JavaScript 从零开始】 数字 文本 包装对象
    【JavaScript 从零开始】 语言核心部分----可选的分号
    解决 Jquery UI Tooltip 用在Select 的BUG
    大前端工具集
    前端知识体系2
    前端知识体系
  • 原文地址:https://www.cnblogs.com/jkeykey/p/14540953.html
Copyright © 2011-2022 走看看