2025年我的Django学习之路 (一) —— Django配置与文件介绍

我的Django学习之路 (一) —— Django配置与文件介绍目录 前言 搭建环境 安装 Django 模块 创建 Django 项目 验证安装 创建 APP 文件介绍 manage py urls py asgi py wsgi py setting py APP Django 的第一个程序 进入默认管理员界面 定义一个函数 url 与函数绑定 注册 APP

大家好,我是讯享网,很高兴认识大家。

目录

前言

搭建环境

安装Django模块

创建Django项目

验证安装

创建APP

文件介绍

★manage.py

★urls.py

asgi.py、wsgi.py

setting.py

APP

Django的第一个程序

进入默认管理员界面

 定义一个函数

 url与函数绑定

注册APP

不解之处

想说的话


前言

Django,我来啦(*'ε`*)。

搭建环境

我的pycharm是社区版,由于社区版没有集成Django模块,所以不能直接创建,只能先创建普通项目工程,然后在通过pip的方式安装Django。

安装Django模块

我们进入pycharm,点击new project,创建一个名为Django的工程。
讯享网

 刚创建完工程的时候啥也没有,点击下方的terminal终端

 输入

pip install django 

讯享网

 直到出现successfully的字样说明已经安装成功。

创建Django项目

继续在终端输入

讯享网django-admin startproject mysite 

 即可创建一个mysite工程。

验证安装

至此我们的Django已经安装成功了,现在可以验证一下。

第一种方法是在终端启动服务

cd mysite
讯享网python manage.py runserver

 出现 http://127.0.0.1:8000/ 其中 Django的端口号是8000

 

说明已经安装成功了

第二种方法是更换运行路径

 然后点击运行即可。

可以看到两种启动方式本质上是一致的。

创建APP

此APP非彼APP, 我们先来了解一些必要的概念。Django 里什么东西叫 APP 呢?我们已经创建了工程mysite, 那么工程与APP之间到底有什么不同呢?它们的区别就是一个是配置另一个是代码,一个project包含很多个Django app以及对它们的配置。

在mysite工程中输入

python manage.py startapp app01

即可生成一个APP01文件夹

文件介绍

上面一下子抛出这么多命令,生成这么多文件,现在就来介绍一下各个文件功能。

★manage.py

最重要的文件之一。它是我们项目管理的脚本,一种命令行工具,允许你以多种方式与该Django项目进行交互。我们在启动项目,创建APP,数据库管理等操作时,都要用到它,一般情况下不用修改,但经常使用

urls.py

先看一下里面的内容

讯享网from django.contrib import admin from django.urls import path urlpatterns = [ path('admin/', admin.site.urls), ]

简单的说这里就是记录url和函数的对应关系,就拿上面的path('admin/', admin.site.urls)来说,第一个参数是url,第二个参数就是跳转这个url之后所要调用的函数。因此,每有新的网页出现都要在这里记录要调用的函数。

asgi.py、wsgi.py

asgi,异步服务网关接口, 一个介于网络协议服务和Python应用之间的标准接口,能够处理多种通用的协议类型,包括HTTP,HTTP2和WebSocket

wsgi, Web Server Gateway Interface,Web服务网关接口,用来描述Web 服务器如何与Web 应用通信的规范。

ASGI是Django3.0之后才有的。它诞生则是为了解决Python常用的WSGI不支持当前Web开发中的一些新的协议标准。同时,ASGI对于WSGI原有的模式的支持和WebSocket的扩展,即ASGI是WSGI的扩展。

一般情况下都不用修改。

setting.py

项目配置文件,常常使用。如配置APP路径,配置数据库,配置中间件等。

APP

一个工程可以有多个APP。APP相当于一个公司的各个部门,每个APP处理不同的工作,如一个APP处理用户界面,一个APP处理管理员界面等。每个APP有独立的数据表结构,函数,html模板,css等

他下面也有许多文件

  • apps:app默认信息,一般不修改
  • ★views:简单地说就是一个函数,接收并处理请求,调用模型和模版,响应请求,与上面urls.py的path第二个参数相对应
  • ★models:涉及数据库相关操作 
  • tests: 单元测试,一般不修改
  • admin:Django默认提供的admin后台管理功能。自己测试,往里面录数据的时候用。

Django的第一个程序

进入默认管理员界面

各文件的大致功能我已经介绍完了。在urls.py那里我介绍过,它是记录url与函数的关系,跳转url会调用对应的函数。

它默认会有个关系

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

 admin.site.urls函数是默认就有的。

 我们试着在中加上该路径,变成然后回车一下。

 果不其然跳转到了新的界面,然后随便输入一个用户名密码。

 就能进入管理员的界面了。

 定义一个函数

 我们是在APP目录下的views文件里面定义函数。每个函数默认都要有一个参数request,假如我们用HttpResponse返回,那么我们可以写成以下形式,作为我们Django的第一个函数。

讯享网from django.shortcuts import render, HttpResponse # Create your views here. # 必须带上request参数 def test(request): return HttpResponse("Hello, world!") 

 url与函数绑定

通过了解进入管理员界面的情况,大家应该对这个绑定关系操作会稍微熟悉些。现在我们就要对新创建的函数进行绑定url,而绑定url操作是在urls.py文件中进行。url的话可以随便写一个,但是要以"/"结尾,现在就在views.py的urlpatterns中添加关系,格式与默认的管理员界面路径一致。

urlpatterns = [ path('admin/', admin.site.urls), path('hd/', views.test), # 调用views文件中的test函数 ]

那么问题来了,这个问题我也琢磨了好久。因为test函数是在views.py中而不是urls.py,所以需要使用import导入到urls.py中。据我目前了解的情况来看,它导入的文件路径与常规的文件导入路径不一致。

以下图为例

 我们先看一下文件目录

在urls.py导入views.py正常情况应该是

讯享网from mysite.app01 import views

 这样pycharm 不会提示有问题可以正常编译,但这样点击运行的话却发现他报错了

 而如果把mysite去掉,写成,会发现pycharm提示语法错误,app01和views下方都有红线,提示出错(app01的错误我点击了忽略显示,所以没有像views下方一样有红线。),但是这样点击运行的却能运行成功!

 至于为什么这样我也不太清楚,只能视为特殊情况了。我这样理解:在Django项目中,不考虑各文件的绝对路径,如需导入文件直接通过 from 目录名 import 文件名 导入即可

注册APP

如果现在访问我们的新设立的网址,他会正常跳转吗?不会。因为我们创建了APP之后还需要注册APP,注册完APP后才能使用APP的各项功能。

注册APP也很简单,在setting.py文件中的 INSTALLED_APPS 声明一下即可。我们将app下面apps文件的类告诉他即可注册成功。

'app01.apps.App01Config'

 也能直接告诉他APP名

讯享网'app01'

 但一般使用第一种 'app01.apps.App01Config',才是标准的声明格式。

这时候的你应该迫不及待了吧哈哈,已经全部弄完了,点击运行,会生成一个地址

 点进去就好了。

然后是不是出现这种情况?

别紧张,将地址由改成即可。

 

不解之处

在Django中,文件,函数的导入方式似乎与python导入文件方式不同,于是我暂时理解为:在Django项目中,不考虑各文件的绝对路径,如需导入文件直接通过 from 目录名 import 文件名 导入即可。

看来这个地方只能靠后面的学习来理解它原理了。

想说的话

感谢bilibili大学,感谢@武沛齐老师,为我在学习Django的路上指明方向。因为学校没有Django课程,没有系统学习过Django开发,只能在视频上学习,所以很多知识点都理解的不够全面,今后的文章里可能会有很多表述错误的情况,还望大家多多指点,我们一起加油!

小讯
上一篇 2025-03-02 23:45
下一篇 2025-02-27 11:28

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/48571.html