CentOS7搭建Django的各种尝试

非计算机专业自学Django笔记,如有错误欢迎补充指正,万分感谢!

CentOS7系统安装完成时自带了yum,pthon3,pip等常用工具就没有额外配置Python环境了
如若要安装,可以通过下列地址获取对应安装包:

  1. python下载地址:https://www.python.org/downloads/
  2. pip下载地址:https://raw.github.com/pypa/pip/master/contrib/get-pip.py

在飞龙编译的Django入门指南中还会要求安装setuptools作为pip的使用依赖,但是我这个系统不安装也能正常使用就没有执行setuptools的安装操作了,如果出现pip无法使用的情况可以参考是否需要安装此依赖:

  1. setuptools下载地址:https://pypi.org/project/setuptools/
本次使用系统的默认Python3版本为3.6.8,对应pip3版本为9.0.3

pip安装django模块,目前最新的是3.2.25版本:

pip install django=="3.2.25"

完成基本的Python环境搭建后,首先要创建Django项目

使用django-admin.py创建项目(这个命令在您运行命令的文件夹中创建一个work_manager文件夹):

python3 django-admin.py startproject work_manager

我们将在该文件夹中找到一个文件夹和一个文件:manage.py
该文件将用于在项目上执行操作,比如启动开发服务器或将数据库与模型同步。

work_manager文件夹代表我们项目的一个应用程序。(默认情况下,startproject命令会创建一个新的应用程序)

work_manager文件夹包含两个非常重要的文件:

  1. settings.py文件包含我们项目的参数。这个文件对我们所有的应用程序都是通用的。我们用它来定义调试模式,配置数据库,或者定义我们将使用的Django包。settings.py文件允许我们做更多的事情,但我们的使用将局限于之前描述的内容。
  2. urls.py文件包含我们所有的URL。通过这个文件,我们在Django中进行路由。

创建好项目环境后,接下来需要创建单独应用程序。

我们不会直接在work_manager文件夹中编写应用程序,而是得再创建一个Task_manager应用程序。
首先我们得使用之前startproject命令创建manage.py文件创建应用程序
(必须在包含manage.py文件的work_manager文件夹中执行该命令)

manage.py startapp TasksManager

这个命令会在目录下创建一个TasksManager文件夹,其中包含五个文件:

  1. __init__.py 文件定义了一个包。Python 需要它来区分标准文件夹和包
  2. admin.py 文件目前没有用。它包含需要并入管理模块的模型
  3. models.py 文件包含我们应用程序的所有模型。我们在应用程序的开发中经常使用它。模型允许我们创建数据库并存储信息。
  4. tests.py 文件包含我们应用程序的单元测试
  5. views.py 文件可以包含视图。这个文件将包含在将 HTML 页面发送给客户端之前执行的所有操作。

创建好项目、应用程序后,需要对一些项目通用内容进行设置

首先需要找到work_manager文件夹下的settings.py文件进行编辑配置

cd work_manager
vi settings.py

这个文件包含了Django初始化Web应用程序时读取的设置。其中有一些主要变量需要关注:

  1. DEBUG :在开发过程中,此参数必须设置为 True ,因为它可以显示错误。当将项目投入生产时,不要忘记将其设置为False ,因为错误会提供有关站点安全性的非常敏感的信息。
  2. TIME_ZONE :此参数设置了必须计算日期和时间的区域。默认值是 UTC 。
  3. LANGUAGE_CODE :这设置了网站上要使用的语言。这是国际化的主要有用参数。
  4. MIDDLEWARE_CLASSES :这定义了所使用的不同中间件。中间件是在请求过程中执行的类和方法(包括在参数中执行的方法)。
  5. DEFAULT_CHARSET :这设置了所使用的字符编码。在task_manager应用程序中,我们使用 UTF-8 编码来简化国际化。

在settings.py文件中添加默认字符编码

DEFAULT_CHARSET = 'uft-8'

做好基础设置后,接下来就是把URL加入到Django服务器

再次进入修改settings.py,把下面的参数写入文件

ROOT_URLCONF = 'work_manager.urls'

通过这条参数可以把work_manager下的urls.py文件中包含的URL带到项目根目录。
Django运作的主要过程:接收客户端请求→进入urls.py检查是否有符合的请求→返回相应视图。

关于urls.py

urls.py在django2.x版本后修改了路由系统,开始使用path索引指定路径下的url,path 函数使用简单路径匹配,不需要 ^ 和 $ 这样的正则表达式边界符号,直接写 '' 表示根路径。
如果要像低版本的url(r'',include())一样使用正则表达式索引复杂的url,则需要使用re_path操作。

正则表达式参考:https://www.cnblogs.com/yibuyi-123/p/14661160.html

Django中的path函数和include函数

path:用于将一个URL模式映射到一个视图函数或者类
path(route,view,kwargs=None,name=None)
  1. route: 一个字符串,表示 URL 的模式或者路径。例如 '' 代表根路径,'articles/' 代表路径前缀为 articles/ 的 URL。
  2. view: 当 URL 被访问时调用的视图函数或基于类的视图。
  3. kwargs: 一个可选的字典,包含要传递给视图函数的额外关键字参数。
  4. name: 一个可选的字符串,用于给这个 URL 路由命名,这样在模板和视图中可以通过这个名字反向解析 URL。
path("list_employee_old", list_employee_old)

这行代码定义了一个URL路由,它将list_employee_old这个路径映射到list_employee_old这个视图函数。
当用户访问http://yourdomain.com/list_employee_old这个URL时,Django会调用list_employee_old这个视图函数来处理请求。
注意:这里没有使用name参数来给这个URL路由命名,所以在模板中或视图中不能直接通过名字来反向解析这个URL。如果需要反向解析,需要添加name参数。

关于path的两个重要路径
1.

path('', views.index, name="index")

当用户访问一个IP地址或者网站的时候,一般第一页显示的是根URL,根路径对应的URL就是根URL,当用户访问这个的时候,django就会调用views.py中的index这个函数。
2.

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

这行代码是URL配置的一部分,用于将admin/路径映射到Django自带的后台管理界面的URL模式。admin.site.urls: 这是一个URL配置对象,通常由Django的admin应用提供。这个对象包含了Django后台管理界面所需要的所有URL模式。

name参数的作用:
比如我们定义了

urlpatterns = [  
    path('', views.index, name='index')
]

这意味着可以在Django的模板中使用{% url 'index' %}来生成这个URL,或者在视图中使用reverse('index')来获取这个URL。

include:将应用的URL模式直接映射到项目的指定URL

include()函数可以接受一个模块路径,作为参数,该模块应该包含一个名为urlpatterns的列表,其中包含该模块定义的URL模式。如果path()里面没有include,默认是视图函数。

path('', include("library_project.urls"))

此代码表示当访问应用的根URL时,Django将查找myapp.urls中定义的URL模式。
这通常用于将应用的URL模式直接映射到项目的根URL。
如果指定的urls内容如下:

from django.urls import path, include
from employee.views import *
urlpatterns = [
    path("list_employee_old/",list_employee_old),
    path("add_employee_old/", add_employee_old),
    path("edit_employee_old/<int:emp_id>/", edit_employee_old),
    path("del_employee_old/<int:emp_id",del_employee_old),
]

当我访问list_employee_old/时,django又会在views中查找list_employee_old函数。
如果views中是:

def list_employee_old(request):
    dep_list = models.Department.objects.all()
    return render(request, 'test_orm_old/list_dep_old.html', {'dep_list': dep_list})

django又会在'test_orm_old目录下查找list_dep_old.html'

path("del_employee_new/<int:group>", del_dep_old)

这行代码定义了一个带参数的URL路由。它包含两部分:
del_employee_new/int:group:这部分是URL的路径。int:group是一个转换器,它告诉Django这个部分应该匹配一个整数,并将这个整数作为关键字参数group传递给视图函数。
del_dep_old:这是当URL被匹配时要调用的视图函数。
当用户访问类似于http://yourdomain.com/del_employee_new/123的URL时(其中123是一个整数),Django会调用del_dep_old这个视图函数,并将整数123作为group参数传递给这个函数。

注意(django中的路径是指网页地址去掉域名或ip地址,端口号以及残数剩下的部分)

  1. http:// 是协议部分。
  2. example.com 是域名。
  3. :8000 是端口号。
  4. /myapp/myview/ 是URL路径。
  5. ?param=value 是查询字符串。

在Django中,我们主要关心的是URL路径部分,即/myapp/myview/。

http://example.com:8000/myapp/myview/?param=value

参考:https://blog.csdn.net/Nanran6/article/details/136564774

了解这些后,在work_manager路径下的urls.py中添加:

path('', views.index, name="index")

启动测试服务器

Django自带了测试使用的服务器,这使得在开发阶段并不需要额外搭建web服务器。但是这个服务器并不安全,并且承受不住大量负载,所以在生产/应用环境中还是得重新搭建一个专业的web服务器。

启动前需要将未应用的迁移应用到数据库中

python3 manage.py migrate

完成迁移后运行Django的测试服务器

python3 manage.py runserver 127.0.0.1:8000

如果远程访问,则需要额外开放访问端口,并把server链接指定为0.0.0.1:8000
端口开放参考:https://www.cnblogs.com/decley/p/18662382

posted @ 2025-01-08 16:05  Decley  阅读(60)  评论(0)    收藏  举报