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')  # 重定向自己网址
原文地址:https://www.cnblogs.com/jkeykey/p/14540953.html