🍖创建django项目与django必会三剑客

一.django框架注意事项

  • 计算机名不能有中文(老外写的,不支持中文)(我的电脑--->属性---->计算机名进行设置)
  • 项目名和 py 文件最好不要使用中文
  • 一个 pycharm 最好只打开一个项目
  • python 解释器最好使用 3.4~3.6 之间版本(否则项目出错, 下面讲解排错)
  • django版本问题 1.x、2.x、3.x, 一般选1.x版本

二.django版本问题

  • LTS: 全称 Long Term Support 官方维护的版本, 也就是稳定版本

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

img

3.x 版本基本不用,可以直接忽略

1.x版本与2.x版本相差不大

公司一般使用1.8与1.11版本, 有一些django项目使用2.0版本

三.命令行模式下载并创建django项目

1.django下载

pip3 install django==1.11.1
# 下载太慢导致失败可以更换下载源 :
豆瓣源 : http://pypi.douban.com/simple/
清华源: https://pypi.tuna.tsinghua.edu.cn/simple
使用方法 : pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.12

2.测试是否安装成功

django-admin  # 出现下图情况说明安装成功

image-20210314152930189

3.创建django项目以及app

🍅创建 "django" 项目
django-admin startproject [项目名]

🍅'cd' 到项目下
cd [项目文件夹]

🍅启动 'django' 项目
python3 manage.py runserver [ip]:[port]  # 后面可以指定ip+port,不指定默认本地回环
🔰ps:这里如果Python解释器版本不兼容可能会报错,到你Python解释器下的文件夹删掉一个逗号即可
🔰'[盘符]:\Python38\lib\site-packages\django\contrib\admin\widgets.py',152行后面的逗号删除

🍅创建 'app'
python3 manage.py startapp [app名字]
  • 创建演示

image-20210314154533281

image-20210314154656801

image-20210314154900884

四.使用Pycharm创建django项目

1.pycharm主界面

  • File----->New Project

image-20210314155830934

2.启动django项目

image-20210314160317163

  • 可能出现的报错信息

image-20210314160437953

image-20210314160517455

image-20210314160641842

image-20210314160728862

image-20210314160745528

3.创建新的 app

  • Tools----->Run manage.py Task...(快捷键 : Ctrl+Alt+r)

image-20210314161138614

image-20210314161212296

4.修改 ip 以及 port

  • 点击右上角绿色三角形左边的项目名大写按钮----->Edit Configurations...

image-20210314161509760

image-20210314161725787

五.app 解释与注册

1.什么是app

  • django是一款专门开发app(应用)的web框架

  • 我们创建一个django项目之后类似于创建了一所大学(空壳子,提供资源的)

  • 而app就类似于大学里面的各个分院,每个分院都可以有自己独立的各项功能职责

    比如写一个淘宝商城:
        订单相关
        用户信息
        交易相关...
    django就是为各个app提供资源的
    
  • 一个app就是一个独立的功能模块

2.app 的注册

  • 我们创建的app一定得去setting.py文件中注册才能生效
  • 上面我们最开始使用pycharm自动创建了第一个应用app01, pycharm也会自动帮我们注册
  • 后边我们手动创建了一个应用app02, 就需要我们去注册了

image-20210314163823475

六.目录结构

1.django目录结构

mysite/                       # 项目名
    |---- mysite文件夹	        # 项目同名文件夹
        |---- __init__.py
        |---- settings.py      # django暴露给用户可以配置的配置文件
        |---- urls.py          # 路由与视图函数(可以是函数也可是类)对应关系(路由层)
        |---- wsgi.py	       # 忽略,wsgiref相关
    |---- app01文件夹	         # 应用(可以有多个)
        |---- __init__.py
        |---- migrations文件夹  # 存储数据库记录相关(类似于操作日志)
            |---- __init__.py
        |---- admin.py          # django后台管理
        |---- apps.py           # 注册app
        |---- models.py         # 数据库相关(模型层)
        |---- tests.py          # 测试文件
        |---- views.py          # 视图函数(视图层)
    |---- db.sqlite3		   # django自带的小型数据库
    |---- manage.py		       # 管理文件, django入口文件
    |---- templates             # 模板文件(存储html文件)(模板层)

image-20210314164912655

2.setting.py 文件配置说明 (列举重要部分说明)

  • DEBUG

定义为一个布尔值,表示开启 / 禁用当前项目的调试模式,

如果DEBUG为True,当应用程序抛出未捕获异常时,Django将显示详细的错误页面

如果要发布项目上时,需将其设置为False,以免暴露某些与产品相关的敏感参数

  • ALLOWED_HOSTS

允许访问的主机, 默认为[ ],对于初学者来说可以不必理会

在发布产品时才会用到,上线之后可以写 *, 表示所有

  • INSTALLED_APPS

表示为需要针对全部项目进行编辑的设置项,该设置项通知Django针对当前站点的哪一个应用程序处于活动状态

默认状态下,Django包含了以下6个应用程序

'django.contrib.admin',         # 管理站点
'django.contrib.auth',          # 验证框架
'django.contrib.contenttypes',  # 处理内容类型的框架
'django.contrib.sessions',      # 会话框架
'django.contrib.messages',      # 消息机制框架
'django.contrib.staticfiles',   # 管理静态文件框架

image-20210314170024246

  • MIDDLEWARE

表示中间件列表,在后期使用表单时,如果是:post 请求,需加上

  • DATABASES

表示一个字典,其中涵盖了应用程序所使用的全部数据库设置。默认采用的是SQLite3数据库

  • ROOT_URLCONF

表示pytho模块,其中定义了应用程序的根URL路径

  • LANGUAGE_CODE

针对当前Django站点定义了默认的代码语言

  • USE_TZ

通知Django启用/禁用时区支持

Django提供了基于时区的日期显示, 当创建一个新项目时,该设置项将定义为True

七.命令行与pycharm创建django项目的不同之处

1.templates 文件配置的不同

  • 命令行创建不会自动创建templates模压板文件夹
  • 命令行也不会自动在配置文件中配置模板文件的文件夹路径
1.需要你新建一个"templates"文件夹
2.去到"setting.py"文件下配置"templates"的路径
    - 🔰未配置前:
        TEMPLATES = [
            {
                'BACKEND': 'django.template.backends.django.DjangoTemplates',
                'DIRS': [],  # 未配置DIRS为空
    - 🔰配置后:
        TEMPLATES = [
            {
                'BACKEND': 'django.template.backends.django.DjangoTemplates',
                'DIRS': [os.path.join(BASE_DIR,'templates')],  # 添加路径拼接

image-20210314171608380

2.创建app时的不同

  • 命令行创建app需要去setting.py文件中去注册(方法上面已经演示过)
# 全写(例:app01)
'app01.apps.App01Config'

# 简写
'app01'
  • pycharm中创建app
# 同项目一起创建的app, pycharm会自动帮你注册

# 后面创建的app都需要自己手动去setting.py文件中去注册

八.django必会三剑客

1.三剑客

  • HttpResponse (HTTP请求)
  • render (渲染)
  • redirect (重定向)

2.三剑客介绍

from django.shortcuts import HttpResponse,render,redirect  # 将三剑客统统导入
  • HttpResponse : 返回字符串类型的数据
def login(request):
    return HttpResponse('欢迎登入该网站')
  • render : 返回HTML文件, 支持向HTML文件中传参并使用模板语法(动态HTML页面)
# 视图函数必须接收一个参数request
def login(request):  
    return render(request,'login.html')

# 动态页面两种传值方式
# 🔰1.使用字典的形式进行传值 : 更加精确,节省资源
def login(request):
    user_info = {"name":"shawn","age":23}
    return render(request,'index.html',{"data":user_info,"datetime":"2021.03"})

# 🔰2.使用locals,会将所在名称空间中所有的名字全部传递给HTML页面调用 : 当想要的数据特别多的时候推荐使用
def login(request):
    return render(request,"login.html",locals())

变量名传入到HTML页面中如何使用? 手撸WEB框架已经介绍过了, 可以传送去看看

  • redirect : 重定向
# 返回他人的网址重定向
def login(request):
    return redirect("https://www.baidu.com")
    
# 返回自己的网址重定向
def login(request):
    return redirect("/index")

3.示例

  • views.py 文件
from django.shortcuts import render, HttpResponse, redirect


def http_response(request):
    """
    HttpResponse 内部传入一个字符串参数,返回给浏览器
    :param request:一个请求相关的所有数据对象,可以用点的方式取值
    :return:
    """
    return HttpResponse(f"Your response:{request.path_info}")


def render_func(request):
    """
    返回html页面(之前我们需要open代开文件,这个不需要)
    :param request:
    :return:
    """
    return render(request, 'login.html')


def redirect_other(request):
    """
    重定向,返回他人的网址
    :param request:
    :return:
    """
    return redirect('https://www.baidu.com')


def redirect_self(request):
    """
    重定向,返回自己的网页
    :param request:
    :return:
    """
    return redirect('/home')


def home_html(request):
    return render(request, 'home.html')
  • urls.py 文件
from django.conf.urls import url
from django.contrib import admin
from app02.views import *

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^http_response/', http_response),
    url(r'^render_login/', render_func),
    url(r'^redirect_other/', redirect_other),
    url(r'^redirect_self/', redirect_self),
    url(r'^redirect_self/', redirect_self),
    url(r'^home_html/', home_html),
]
  • 访问网址

image-20210314183234820

  • http_response : 返回字符串

image-20210314183322759

  • render_func : 返回HTML页面

image-20210314183438184

  • redirect_other : 重定向别人网址

image-20210314183555403

  • redirect_self : 重定向自己网址

image-20210314183802073

---end---

posted @ 2021-03-14 19:07  给你骨质唱疏松  阅读(313)  评论(0编辑  收藏  举报