Django-1-入门

一、安装

1.1 准备虚拟环境

看过我的Flask课程的用户,应该已经知道了,如何安装虚拟环境,这里在复习一遍。

Django-1-入门
image.png

1.2 安装django

pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple

上面指定了清华的源。

Django-1-入门
image.png


这里安装django的默认最新版本,也可以通过指定版本来安装。


1.3 查看安装的软件

pip list
Django-1-入门
image.png

二、创建项目

2.1 方式一:采用django命令方式

进入到要存放项目的目录,执行如下命令

django-admin startproject 项目名称

此时会创建一个以项目名称为文件夹的项目。

2.1.1 pycharm配置虚拟环境

在电脑上,创建如下路径:

Django-1-入门
image.png


我的项目地址D:projectpythonProjectdjangoApp
然后,用pycharm打开,并信任该目录。
打开后,开始配置解析器
打开Settings如下配置

Django-1-入门
image.png


然后找到自己安装的虚拟环境的位置

Django-1-入门
image.png

2.2 开始创建项目

打开pycharm的终端,其实也就是自己项目的终端。
也就是我的项目地址,一定要进入到虚拟环境中的(在Pycharm上打开终端是自动进入虚拟环境的)。

django-admin startproject demo1
Django-1-入门
image.png


然后生成的项目结构如下:

Django-1-入门
image.png
  • 第一层demo1是项目名称

  • 第二层demo1代表的是一个app应用

  • manange.py是管理程序,属于django自动生成的,不需要我们操作

2.2 方式二:采用Pycharm创建

Django-1-入门
image.png


生成的目录如下:

Django-1-入门
image.png


与命令唯一区别就是,这里可以生成一个应用模块,这里指的是student模块。


2.1.1 `manage.py`

是Django用于管理本项目的命令行工具,之后进行站点运行,数据库自动生成等都是通过本文件完成.

2.1.2 demo2下结构说明

`init.py`

告诉python该目录是一个python包

`settings.py`

Django项目的配置文件,默认状态其中定义了本项目引用的组件,项目名,数据库,静态资源等.

`urls.py`

维护项目的URL路由映射,即定义当客户端访问时由哪个模块进行响应

`wsgi.py`

全称为Python Web Server Gateway Interface,即Python服务器网关接口,是Python应用与Web服务器之间的接口,用于Django项目在服务器上的部署和上线,一般不需要修改。

`asgi.py`

定义ASGI的接口信息,和WSGI类似,在3.0以后新增ASGI,相比WSGI,ASGI实现了异步处理,用于启动异步通信服务。

2.1.3 student结构说明

migrations

数据迁移所用,与flask类似,都是操作数据库的

admin.py

注册到django的管理台上,可以在管理台上操作该模块的增删改查。

models.py

编写模型的地方。

test.py

测试文件

views.py

与url关联的视图文件

2.3 settings.py文件详解

from pathlib import Path

"""
项目根目录,base目录,是当前文件的父目录的父目录,最终就是最外层的demo2文件夹
"""

BASE_DIR = Path(__file__).resolve().parent.parent

"""
SECURITY 项目中的加解密会用到,默认即可
"""

SECRET_KEY = 'django-insecure-s4e2)xp#&)rovxjw2(%vmg+)fjj8-^$q6@d=r=2j)5(44$v8l@'

"""
是否是调试模式
True:调试模式,一般用在开发环境中
False:非调试模式,一般用于生成部署
"""

DEBUG = True

"""
可以访问该项目的IP
* 代表通配符,所有IP都可以访问
如果指定IP,只有指定IP可以访问
"""

ALLOWED_HOSTS = ['*']

"""
定义应用
一部分是django自身用到的应用
一部分就是自己定义的业务应用,例如student
"""

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # 这里是student模块的配置
    'student.apps.StudentConfig',
]

"""
中间件
如果是自定义中间件,就需要在这里注册
"""

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

"""
根路由,这里使用的demo2文件夹下的urls作为根路由,也就是应用的入口路由
"""

ROOT_URLCONF = 'demo2.urls'

"""
模板配置信息
"""

TEMPLATES = [
    {
        'BACKEND''django.template.backends.django.DjangoTemplates',
        'DIRS': [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',
            ],
        },
    },
]

"""
wsgi目录相关
"""

WSGI_APPLICATION = 'demo2.wsgi.application'

"""
配置数据库
这里使用的是嵌入式数据库sqlite;当然也可以使用mysql等其他数据库
"""

DATABASES = {
    'default': {
        'ENGINE''django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

# 密码验证,django会自动使用
AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME''django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME''django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME''django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME''django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

"""
国际化配置,en-us是英语
zh-hans 是中文
"""

LANGUAGE_CODE = 'en-us'

"""
时区
"""

TIME_ZONE = 'UTC'

USE_I18N = True

USE_TZ = True

"""
静态文件路径 (CSS, JavaScript, Images)
"""

STATIC_URL = 'static/'

"""
默认的主键类型
"""

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

三、运行项目

2.1 命令行启动

在项目的命令行路径下,执行

python .manage.py runserver
Django-1-入门
image.png


启动后,这里会有一个提示:说需要进行迁移的,在这里可以不迁移,先看一下启动效果

Django-1-入门
image.png

2.2 命令行的其他可用命令

python .manage.py

就会给出可用的命令

Django-1-入门
image.png


后续会逐步讲解这里的用法。


四、数据迁移

迁移的概念: 就是将模型转变成SQL,在数据库中执行。

4.1 生成迁移文件

python manage.py makemigrations
Django-1-入门
image.png

4.2 执行迁移

python manage.py migrate
Django-1-入门
image.png


不需要初始化迁移文件夹,每个应用默认有迁移文件夹migrations。


4.3 查看迁移后结果

此时,会生成如下文件

Django-1-入门
image.png


打开该文件,该文件就是当前所用的数据库

Django-1-入门
image.png


打开后,会把当前模型,同步到数据库中去了。
注意:此时我们还未编写任何一个模型,这些都是django自己需要的。


五、添加应用

5.1 添加应用

python manage.py startapp 应用名称

这里创建一个应用,类似于通过Pycharm创建项目时就创建的一个应用student一样。

Django-1-入门
image.png


创建项目结构如下

Django-1-入门
image.png


这里的项目结构,与2.2中的一致哦。


5.1 在settings.py中配置

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # 这里是student模块的配置
    'student.apps.StudentConfig',
    # 配置teacher模块
    'teacher.apps.TeacherConfig',
]

六、视图函数入门

这里以student模块来操作。

6.1 views.py

from django.http import HttpResponse
from django.shortcuts import render


"""
视图函数,这里的参数request用于接受请求参数,但是只是参数而已
"""



def index(request):
    return HttpResponse("hello world")

6.2 在demo2的urls.py中增加视图配置

关联路由与视图函数的关系

from django.contrib import admin
from django.urls import path

# 导入student应用中的视图文件中所有,用于与路由url关联
from student.views import *

urlpatterns = [

    # 路由,只有当url中输入ip:端口/index/的时候,这里就会拦截到,然后转换到 index函数中去处理
    path('index/', index),

    path('admin/', admin.site.urls),
]

6.3 运行效果

Django-1-入门
image.png

6.4 视图函数中渲染模板

模板文件,存放在templates文件夹下。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<h2>这里是首页</h2>
</body>
</html>

views.py中代码

from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.

"""
视图函数,这里的参数request用于接受请求参数,但是只是参数而已
"""



def index(request):
    # return HttpResponse("hello world")
    # 渲染模板
    return render(request, 'index.html')

运行效果

Django-1-入门
image.png


原文始发于微信公众号(Python之家):Django-1-入门

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/198214.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!