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

Django主要分为三大版本:1.X 2.X 3.x

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

3.x 目前来说几乎不使用,可以直接忽略。

一开始公司用1.8版本后来过度到了1.11.11版本,所以现在公司一般使用1.8与1.11版本,有一些Django项目使用2.0版本

三、下载安装Django与创建项目

1. 使用命令行下载Django

pip3 install django==1.11.1	#指定安装版本为1.11.1

提示:如果已经安装了其他版本,无需自己卸载
排错:
	1.如果报错,看看是不是timeout 如果是 那么只是网速波 重新安装即可
    2. 如果pip命令也出现错误Fatal error in launcher: Unable to create process using, 那么更新pip命令
        python -m pip install --upgrade pip

#下载太慢导致失败可以更换下载源:
豆瓣源 : 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

更多pip软件包管理工具详解参见CSDN;

2.测试是否安装成功

  1. 输入django-admin看看是否有反应
django -admin	#出现下图说明安装成功

image-20210317213840920

  1. 进入python交互式命令行
>>> import django
>>> django.get_version();
'1.11.11'

image-20210317214417255

四、创建项目

1. 命令行创建Django项目以及app

第一步:创建Django项目
#注意:这种创建方式十创建到当前文件夹下,如果需要创建指定文件夹下再执行这条命令

1.切换文件夹
cd [文件夹]

2.创建Django项目
django-admin startproject 项目名 
第二部:启动Django项目
'''注意:一定要切换到项目文件夹下'''

#启动Django项目
python3 manage.py runserver [ip]:[port] #runserver后面可以绑定IP和端口,不指定使用默认的本机回还地址,Django默认端口为8000。
    
#报错解决:
如果python解释器版本不兼容可能会报错,只要在你的python解释器下的文件夹删除一个逗号即可。
[path盘符]:\Python38\lib\site-packages\django\contrib\admin\widgets.py',152行后面的逗号删除

#项目启动后:
上面启动了Django以后,在浏览器输入ip地址和端口号
访问页面内容会出现如下一句话:
Next, start your first app by running python manage.py startapp [app_label].
第三步:创建应用
#创建应用
python manage.py startapp app01 #app01应该见名知意

演示:

image-20210317232704656

image-20210317232942289

image-20210317233256713

image-20210317233334257

2

接下来我们来访问项目地址

image-20210317234615795

创建应用:

image-20210317235146992

2.使用pycharm创建Django项目

第一步:创建Django项目

打开pycharm主界面,File----->New Project,接下来如图所示:

在创建项目时指定Application可以创建一个, 且同时也会在settings.py配置文件中INSTALLED_APPS中注册.

1

第二步:启动Django项目

123

  • 出现报错信息

image-20210318001502489

image-20210318001702770

模板文件配置:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, "template")],  # 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',
            ],
        },
    },
]

image-20210318001959662

点击链接进入查看

image-20210318002309789

第三步:创建新的应用
  • Tools----->Run manage.py Task…(快捷键 : Ctrl+Alt+r)

image-20210318002739567

命令框内输入如下格式命令创建app:

startapp [app名字] #这样就会创建一个新的app

image-20210318003157962

image-20210318003531927

第四部:修改ip以及port
  • 点击pycharm右上角绿色三角形左边的项目名大写按钮----->Add Configurations…

image-20210318003840301

image-20210318004109617

image-20210318004325202

五、app解释与注册

1. 什么是app

  • Django是一款专门开发app(应用)的软件

  • 我们创建一个Django项目就类似于创建一所大学,Django就相当于一个空壳子,用来给各个学院提供资源。

    比如开发京东:

    • 订单相关
    • 用户相关
    • 物流相关
  • 而app就类似于大学里面的各个学院,每个学院都可以有自己独立的各项功能职责,一个app就是一个独立的功能模块。

    选课系统

    • 学生功能
    • 老师功能

2.app的注册

  • 我们创建的app一定得去setting.py文件中注册才能生效

  • 在pycharm中,我们创建一个app,pycharm会自动帮我们注册。

    比如:我们最开始使用pycharm自动创建了第一个应用app01, pycharm也会自动帮我们注册img

  • 如果是手动创建的一个应用app,则需要我们手动注册

    后边我们手动创建了一个应用app02, 就需要我们去注册了

创建的应用一定要去setting.py配置文件中找到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',
    'app02.apps.App01Config',	    # 注册完整写法
    'app02'		    # 注册简写
]

六、目录结构

1.目录结构介绍

mysite/	#项目名
├── manage.py  # 管理文件. django的入口文件
├── mysite     # 项目目录
    ├── __init__.py
    ├── settings.py  # 配置
    ├── urls.py      # 路由和视图函数的对应关系(路由层)
    └── wsgi.py      # runserver命令就使用wsgiref模块做简单的web server
├── db.sqlite3       # django自带的sqlite3数据库(小型数据库 功能不是很多还有bug)
├── templates	#存储数据库记录相关(类似于操作日志)
└── app01      # 应用目录(可以有多个)
    ├── migrations   # 数据库迁移记录
        └── __init__.py
    ├── __init__.py
    ├── admin.py     # django后台管理
    ├── apps.py      # 注册app使用
    ├── models.py    # 数据库相关的 模型类(orm)
    ├── test.py      # 测试文件
    └── views.py     # 视图函数(视图层)

image-20210318144723202

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-20210318151645365

  • MIDDLEWARE

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

  • DATABASES

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

  • ROOT_URLCONF

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

  • LANGUAGE_CODE

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

  • USE_TZ

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

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

七、命令行与pycharm创建Django项目的不同之处

1.templates文件配置的不同

  • 命令行创建不会自动创建templates模压板文件夹
  • 命令行也不会自动在配置文件中配置模板文件的文件夹路径

TEMPLATESl两者对比示例:

# 命令行创建不会自动有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': [],
        ...
]  

image-20210318155328248

2.创建app的不同

  • 命令行创建app需要的去setting.py文件注册,找到INSTALLED_APPS中添加[app名].apps.[app名]Config 或者 [app名]。(上面已经演示演示过)
# 全写(例:app01)
'app01.apps.App01Config'

# 简写
'app01'
  • pycharm中创建app
    • 同项目一起创建的app, pycharm会自动帮你注册
    • 后面创建的app都需要自己手动去setting.py文件中去注册

image-20210318160133304

八、使用脚本调用django

1 写一个脚本文件
import os
#加载配置文件,跑django的项目,最开始就是把配置文件加载上
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day53.settings")

if __name__ == '__main__':
    import django  # 安装了django模块,就可以import
    django.setup() # 使用环境变量中的配置文件,跑django

    from app01 import models


九、Django三剑客


1.三剑客

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

Ps:重定向图解:

img

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())

  • 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

十、总结

# 4大注意事项:
    1. 计算机名称不能有中文
    2. pycharm一个窗口开一个项目
    3. 项目文件夹不要出现中文
    4. 解释器版本使用3.4~3.6
        如果项目报错点击最后一条报错信息, 去除源码中的逗号

# Django版本使用
    1xx 2xx 3xx
    使用LTS官方长时间支持的版本版本: 1.8  1.11 2.2

# Django安装: 再次安装会覆盖(配置了环境变量)
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple  django=1.11.11
    报错timeout是网速问题

# 检测安装成功: (配置了环境变量)
    终端: django-admin
    交互式命令行:
        import django
        django.get_version()

# Django基本操作
    # 命令行操作
        创建django项目:  django-admin startproject 项目名
        启动django项目:  python3 manage.py runserver
        创建应用:  python3 manage.py startapp 应用名

    # pycharm操作
        创建django项目:  new project -> Django -> Location,Existing Interpreter,create
        启动django项目:
        创建应用:
            ctrl+alt+r -> startapp 应用名.
            在创建项目时指定Application可以创建一个, 且同时也会在settings.py配置文件中INSTALLED_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')  # 重定向自己网址
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贾维斯Echo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值