【Django】01 windows 端创建一个django项目并实现路由

选择虚拟环境,创建Django项目

首先我们需要激活创建 django 的虚拟环境,详细的步骤为;在Windows端进入虚拟环境目录中 /Scirpts 对应的目录中;使用命令activate;激活虚拟环境(提示:取消激活虚拟环境的命令为deactivate

F:\working_space\python\venv\django_chengxian>cd Scripts

F:\working_space\python\venv\django_chengxian\Scripts>activate
# 出现如下命令行提示,代表虚拟环境激活成功
(django_chengxian) F:\working_space\python\venv\django_chengxian\Scripts>

在激活虚拟环境成功后我们就可以使用这个环境创建Django 项目了;首先 cd 到创建项目的目录(工作空间)

中;然后使用命令:django-admin startproject 项目名称;即可实现新建项目

(django_chengxian) F:\working_space\python>cd Projects

(django_chengxian) F:\working_space\python\Projects>django-admin startproject bookmanager001

检查是否创建了项目:

(django_chengxian) F:\working_space\python\Projects>dir
 驱动器 F 中的卷是 working_space
 卷的序列号是 6EDA-C8BB

 F:\working_space\python\Projects 的目录

2020-12-04  17:29    <DIR>          .
2020-12-04  17:29    <DIR>          ..
2020-12-04  17:09    <DIR>          bookmanager
2020-12-04  17:29    <DIR>          bookmanager001  # 发现新创建了一个项目
               0 个文件              0 字节
               4 个目录 623,913,484,288 可用字节

发现项目bookmanager001 已经 被创建了

当我们进入项目的目录时 会发现一个名为manage.py的pyhton文件:

(django_chengxian) F:\working_space\python\Projects\bookmanager001>dir
 驱动器 F 中的卷是 working_space
 卷的序列号是 6EDA-C8BB

 F:\working_space\python\Projects\bookmanager001 的目录

2020-12-04  17:29    <DIR>          .
2020-12-04  17:29    <DIR>          ..
2020-12-04  17:29    <DIR>          bookmanager001
2020-12-04  17:29               834 manage.py
               1 个文件            834 字节
               3 个目录 623,913,484,288 可用字节

这个文件在前期有着驱动django命令的作用;接下来我们为这个项目创建子程序,创建子程序的命令是

python manage.py startapp 子程序名称

(django_chengxian) F:\working_space\python\Projects\bookmanager001>python manage.py startapp book

(django_chengxian) F:\working_space\python\Projects\bookmanager001>python manage.py startapp login

(django_chengxian) F:\working_space\python\Projects\bookmanager001>python manage.py startapp pay

创建了三个子程序,名称分别为:book \ login \ pay;可以通过 命令进行检查

(django_chengxian) F:\working_space\python\Projects\bookmanager001>dir
 驱动器 F 中的卷是 working_space
 卷的序列号是 6EDA-C8BB

 F:\working_space\python\Projects\bookmanager001 的目录

2020-12-04  17:32    <DIR>          .
2020-12-04  17:32    <DIR>          ..
2020-12-04  17:31    <DIR>          book    # 创建了三个子程序
2020-12-04  17:31    <DIR>          bookmanager001
2020-12-04  17:31    <DIR>          login
2020-12-04  17:29               834 manage.py
2020-12-04  17:32    <DIR>          pay
               1 个文件            834 字节
               6 个目录 623,913,467,904 可用字节

现在我们的Django 其实已经创建好了,可以通过命令

python manage.py runserver (可缺省:ip:自定义端口号)

进行访问,缺省的ip是环回地址:127.0.0.1 缺省的端口(默认)端口是8000

(django_chengxian) F:\working_space\python\Projects\bookmanager001>python manage.py runserver 127.0.0.1:8080   # 访问自定义端口:8080
Performing system checks...

当出现以下提示:

System check identified no issues (0 silenced).

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
December 04, 2020 - 17:40:53
Django version 1.11.11, using settings 'bookmanager001.settings'
Starting development server at http://127.0.0.1:8080/
Quit the server with CTRL-BREAK.

说明当前的项目运行成功,我们可以通过浏览器进行访问
在这里插入图片描述

使用pycharm 打开并编辑 django 项目

现在我们使用编辑工具pycharm打开项目,注意打开的是一整个项目目录

在这里插入图片描述

因为pycharm在打开项目时并没有对项目进行虚拟环境的配置,这里需要在项目的file–>settings–>Project interpreter中进行设置:
在这里插入图片描述

一般配置python可执行文件的路径都在\Scirpts\目录中

配置成功后会出现如图所示的效果:
在这里插入图片描述

接下来注册我们刚刚创建的子应用:首先来到工程目录下的(工程名目录)找到settings.py文件进行注册
在这里插入图片描述

在文件的INSTALLED_APPS 列表中对子应用进行注册,注册的方式:添加语句:子应用名称.apps.子应用函数

也可以直接添加语句子应用名称

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 对子应用进行注册
    'book.apps.BookConfig',
    'pay.apps.PayConfig',
    'login.apps.LoginConfig'
]

创建并迁移数据模型进行数据迁移模型

创建数据模型

创建数据模型并将数据模型迁移到对应的数据库中,首先进入预期子应用的models 文件中 创建如下代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XjDA6sUL-1607092643957)(F:\working_space\笔记\md-images\image-20201204185442600.png)]

from django.db import models


# Create your models here.
class Bookinfo(models.Model):
    name = models.CharField(max_length=10)
    # 在界面上返回本身的属性值
    def __str__(self):
        return self.name


class Peopleinfo(models.Model):
    # 设置属性--char类型
    name = models.CharField(max_length=10)
    # 设置属性--bool类型
    gender = models.BooleanField()
    # 设置外键
    book = models.ForeignKey(Bookinfo)
进行数据迁移

使用命令python manage.py makemigrations 创建迁移文件

使用,命令python manage.py migrate 进行数据迁移

(django_chengxian) F:\working_space\python\Projects\bookmanager001>python manage.py makemigrations
Migrations for 'book':
  book\migrations\0001_initial.py
    - Create model Bookinfo
    - Create model Peopleinfo

(django_chengxian) F:\working_space\python\Projects\bookmanager001>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, book, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
...

命令提示创建成功

在这里插入图片描述

创建成功后我们在数据库表中可以发现我们自定义的数据库:book_bookinfobook_peopleinfo

在网站中注册子应用模型信息

语法:admin.site.register(模型类)

在对应子应用的:admin.py 文件中进行注册:

在这里插入图片描述

from django.contrib import admin
from book.models import Bookinfo  # 导入模型类

# Register your models here.
#  语法: admin.site.register(模型类)
admin.site.register(Bookinfo)
创建网站的超级用户

命令:pyhton manage.py createsuperuser

输入对应信息即可通过创建的超级用户登录网站后台

(django_chengxian) F:\working_space\python\Projects\bookmanager001>python manage.py createsuperuser
Username (leave blank to use 'martin-lau'): martin-lau
Email address: 10518525@cxxy.com
Password:
Password (again):
Superuser created successfully.

默认的登录网址:(http://127.0.0.1:8000/admin/):即为端口号 + 对应目录

在网页中注册模型类

在网页中注册模型类,让用户可以通过网站后台对数据库中的数据进行操作,注册语法:admin.site.register(模型类)

在对应子应用中的/admin.py目录中添加如下代码:

from django.contrib import admin
from book.models import Bookinfo  # 导入模型类

# Register your models here.
#  语法: admin.site.register(模型类)
admin.site.register(Bookinfo)

完成对应的模型类在站点中的注册

注册后的效果:

在这里插入图片描述
可以对已经在admin.py中实现网站注册admin.site.register(模型类) 的模型类进行操作
在这里插入图片描述

实现多页面跳转路由

实现最简单的网页HttpResponse回复式路由

1、添加对应子应用的路由视图函数

以 book 子应用为例:首先我们在/book/views.py 中添加对应的视图函数:

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


# Create your views here.
def index(request):
    """
    视图函数,返回的结果是网页端的返回值或是返回的渲染页面
    :param request: 代表http请求
    :return: HttpResponse(返回内容)
    """
    return HttpResponse('index')

2、修改项目工程目录中的urls.py文件,添加路由信息

在这里插入图片描述

并添加对应的路由信息,在urlpatterns 列表中添加一条路由信息:

    url(r'^', include('book.urls')), 

url()函数,第一个参数是正则匹配、第二个参数是调用的路由函数(其中include需要导入);

添加在列表中;

主工程目录的urls.py文件的urlpatterns列表,元素为url函数url(r'正则,视图函数或者include(’子应用的urls‘))

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    # url 逐个匹配 先匹配admin/中有无路由信息,如果有,就调用对应的视图函数,如果没有,就继续匹配||如果整个urlpatterns 中都没有,那么返回404
    url(r'^', include('book.urls')),  # 除了admin/ 都会进入这个子应用的urls.py中进行匹配
    url(r'^pay/',include('pay.urls'))
]

django会从上到下依次根据用户访问的url进行正则匹配(先匹配)

django框架会根据用户输入的url进行正则匹配,匹配的内容是路径,比如对应的url为:(http://127.0.0.1:8000/index/)因为在工程目录中的urls.py文件中只写了一个开始符号^;所以在子应用的urls.py文件中需要拼接index/,子应用中的urls.py内容为:

from django.conf.urls import url
from django.contrib import admin
from book.views import index

urlpatterns = [
    # 第一个参数是正则、第二个参数是对应组件views.py 中的视图函数名
    url(r'^index/$', index),  # 其中 index 是对应视图(book.views)的视图函数名称
]

接着我们在连接中拼接/index 路径,就可以访问之前在views.py中定义的视图函数了:(http://127.0.0.1:8000/index/)
在这里插入图片描述

实现带有template模板渲染的路由信息

以子应用pay为例,在刚才步骤的基础上多了一个模板目录:template

1、创建并注册对应的模板文件

首先创建这个目录:(在项目根目录下进行创建)用来存放html和其他网页文件

在这里插入图片描述

创建一个HTML文件并添加如下代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>付款界面</title>
</head>
<body>
    <h1>{{ name }}:支付尾款</h1>   // 这里的<h1>标签中使用的是django模板语言,后续的更新中会提到
</body>
</html>

完成之后我们要对这个模板文件(网页模板)进行注册;打开工程文件目录**(就是那个跟工程名名称一样的目录)**下的settings.py,在TEMPLATES 列表中的:DIR 列表中添加对应的模板目录;

列表:TEMPLATES = [] :设置模板相关的属性 、 DIR :设置模板文件的目录,添加如下代码:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # DIRS 与模板目录有关的设置
        'DIRS': [
            # 注册模板目录
            os.path.join(BASE_DIR, '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',
            ],
        },
    },
]

这样,在工程文件中注册模板文件目录就已经结束了,采用的是拼接路径的方式,其中BASE_DIR 指的是工程文件的根目录

2、在 pay.views.py中调用渲染函数render,对模板文件进行渲染

在子应用 pay 目录下的 views.py文件中添加代码:

from django.shortcuts import render
from django.http import HttpRequest, HttpResponse  # 导入http请求回复包

# Create your views here.
context = {
	# 模板语言
    'name': '用户名称'
}


def payment(request):
    # 调用 render函数
    return render(request, 'payment.html', context=context)

render() 函数:第一个参数是请求对象:request

第二个参数是/template 文件中的对应HTML文件名称

第三个参数是django 模板语言传递的数据(以字典context的形式传递)(键值对)

在html文件中使用{{ 键名 }} 进行调用context中传递的参数;

3、添加对应的路由信息

在工程目录下的/ urls.py 文件中加入对应的路由信息:

    url(r'^pay/', include('pay.urls'))  # 第一个参数匹配正则(url):/pay
    # 第二个参数是使用include()对子应用路由信息的调用

在子应用目录下的urls.py文件中加入对应的路由信息:

from django.conf.urls import url

from pay.views import payment

urlpatterns = [
    # 这个路径是从工程目录的urls.py中引导过来的,
    # 正则匹配的内容是路径(与端口号,路径后的键值对参数无关)
    # 匹配方式类似与拼接字符串url
    # 匹配的链接是:http://127.0.0.1:8000/pay/payment/
    # 工程目录的urls.py 完成了pay/的拼接,在子应用中只需要完成payment/的拼接
    url(r'^payment/$', payment)

]

最后运行项目,访问对应的url:(http://127.0.0.1:8000/pay/payment/)

在这里插入图片描述

就可以看到这个界面了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值