news 2026/9/7 11:10:51

Python笔记:Django框架的应用的管理、项目的模型、网站Admin管理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python笔记:Django框架的应用的管理、项目的模型、网站Admin管理

进入我们的项目Django-1.11.11

  • 假设在创建之初, 我们通过此命令来创建: $django-admin startproject DjangoApp
  • 后期将最外层目录修改为了:Django-1.11.11
  • 根据我们使用的Django版本的文档

运行开发服务器

  • $python3 manage.py runserver

    • 这样只能本机调试访问
  • $python3 manage.py runserver 8080

    • 该runserver命令在端口8000的内部IP上启动开发服务器。当然也可以指定端口开启服务,如8080端口
  • $python3 manage.py runserver 0:8000

    • 这样启动,通过0可以进行远程访问, 并且在settigns.py中ALLOWED_HOSTS添加自己的ip地址, 或支持所有 ALLOWED_HOSTS = [‘*’]
    • runserver只能在本机使用, 是Django自带的http服务
    • 部署时应使用uwsgi

应用的创建

1 )创建一个应用程序

  • Django自带一个实用程序,可以自动生成应用程序的基本目录结构,因此您可以专注于编写代码而不是创建目录。

  • 要创建您的应用程序,请确保您与目录位于同一目录,manage.py 并键入以下命令:

    • $python3 manage.py startapp app
  • 这将创建一个目录app,其目录如下:

    Django-1.11.11/ ├── manage.py ├── DjangoApp │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py └── app ├── admin.py ├── apps.py ├── __init__.py ├── migrations │ └── __init__.py ├── models.py ├── tests.py └── views.py

2 )编写我们的第一个视图

  • 我们来写第一个视图。打开文件app/views.py 并放入以下Python代码:

    fromdjango.httpimportHttpResponsedefindex(request):returnHttpResponse("Hello World!")
  • 这是Django中最简单的视图。要调用视图,我们需要将其映射到一个URL - 为此,我们需要一个URLconf。

  • 要在app目录中创建一个URLconf,创建一个名为urls.py。您的应用目录应该如下所示:

    └── app ├── admin.py ├── apps.py ├── __init__.py ├── migrations │ └── __init__.py ├── models.py ├── tests.py ├── urls.py └── views.py
  • 在app/urls.py文件中包含以下代码:

    fromdjango.conf.urlsimporturlfrom.importviews urlpatterns=[url(r'^$',views.index,name='index'),]
  • 下一步是将根URLconf指向app.urls模块, 在DjangoApp/urls.py添加一条import用于django.conf.urls.include和插入include()的urlpatterns列表

    fromdjango.conf.urlsimportinclude,urlfromdjango.contribimportadmin urlpatterns=[url(r'^admin/',admin.site.urls),url(r'^app/',include('app.urls')),]
  • 其中include()函数允许引用其他URLconfs。请注意,该include()函数的正则表达式 没有$(字符串匹配字符),而是尾部的斜杠。

  • 每当Django遇到时 include(),它会排除与该点匹配的任何部分,并将剩余的字符串发送到随附的URLconf进行进一步处理。

  • 背后的想法include()是使即插即用的URL变得容易。

  • 注:include()当您包含其他网址格式时,您应始终使用。admin.site.urls是唯一的例外。

  • 验证index视图连接到URLconf中, 运行以下命令:$python manage.py runserver 0:8000

  • 访问:http://0.0.0.0:8000/app/ 可见Hello World!输出

3 )关于url()函数的补充

  • Django url() 可以接收四个参数,分别是两个必选参数:regex、view 和两个可选参数:kwargs、name,接下来详细介绍这四个参数。
    • regex: 正则表达式,与之匹配的 URL 会执行对应的第二个参数 view
    • view: 用于执行与正则表达式匹配的 URL 请求
    • kwargs: 视图使用的字典类型的参数
    • name: 用来反向获取 URL

项目模型

1 )连接MySQL数据库设置

  • 默认情况下,配置使用SQLite。若不使用SQLite作为数据库,则需要额外的设置,例如 USER,PASSWORD和HOST必须加入。
  • 其中ENGINE设置为数据库后端使用。内置数据库后端有:
    'django.db.backends.postgresql' 'django.db.backends.mysql' 'django.db.backends.sqlite3' 'django.db.backends.oracle'
  • 在DjangoApp/settings.py文件中,通过DATABASES项进行数据库设置
    DATABASES={'default':{'ENGINE':'django.db.backends.mysql','NAME':'mydemo','USER':'root','PASSWORD':'',# 填入自己的密码'HOST':'localhost','PORT':'3306',}}
  • 注意:Django使用MySQL数据库需要安装PyMySQL, $pip3 install pymysql
  • 打开 DjangoApp/init.py,写入以下代码导入pymysql:
    importpymysql pymysql.install_as_MySQLdb()

2 )创建模型

  • 在我们的简单的应用程序中,去创建一个stu表信息操作的Model类
  • 编辑app/models.py文件
    fromdjango.dbimportmodels# Create your models here.classStu(models.Model):'''自定义Stu表对应的Model类'''#定义属性:默认主键自增id字段可不写id=models.AutoField(primary_key=True)name=models.CharField(max_length=16)age=models.SmallIntegerField()sex=models.CharField(max_length=1)classid=models.CharField(max_length=8)# 定义默认输出格式def__str__(self):return"%s:%s:%s:%s:%s"%(self.id,self.name,self.age,self.sex,self.classid)# 自定义对应的表名,默认表名:app_stuclassMeta:db_table="stu"

3 )激活模型

  • 要将该应用程序包括在我们的项目中,我们需要在设置中添加对其配置类的引用INSTALLED_APPS
  • 该appConfig是在app/apps.py文件中,所以它的访问路径’app.apps.AppConfig’
  • 编辑DjangoApp/settings.py文件,并将该虚线路径添加到该INSTALLED_APPS设置
    INSTALLED_APPS=['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','app.apps.AppConfig',# 这里或者直接写 'app']

4 )交互式的Python shell

  • 使用Django提供的免费API
    $ python3 manage.py shell Python3.6.7(v3.6.7:6ec5cf24b7, Oct202018, 03:02:14)[GCC4.2.1 Compatible Apple LLVM6.0(clang-600.0.57)]on darwin Type"help","copyright","credits"or"license"formoreinformation.(InteractiveConsole)>>>from app.modelsimportStu>>>mod=Stu.objects>>>lists=mod.all()>>>forvinlists:... print(v)...1:zhangsan:10:m:p012:lisi:12:m:p023:lily:9:w:p03>>>mod.get(id=1)<Stu:1:zhangsan:10:m:p01>>>>mod.get(id=2)<Stu:2:lisi:12:m:p02>>>>mod.get(id=3)<Stu:3:lily:9:w:p03>>>>quit()

5 )在app应用的视图中使用

  • 文件:app/views.py 文件代码

    fromdjango.shortcutsimportrenderfromdjango.httpimportHttpResponsefromapp.modelsimportStu# Create your views here.defindex(request):returnHttpResponse("Hello Django!")defstu(request):#获取所有stu表信息lists=Stu.objects.all()print(lists)#获取单条学生信息print(Stu.objects.get(id=1))returnHttpResponse("ok")
  • 配置stu函数的访问路由, 在app/urls.py文件中配置

    url(r'^stu$',views.stu),
  • 启动服务后,在浏览器中访问,在命令行终端中查看输出效果: http://0.0.0.0:8000/app/stu

启用网站Admin管理

1 )数据迁移

  • Django框架中有一个非常强大的应用功能–自动管理界面,常被Web平台管理者使用,去管理整个Web平台。

  • 默认情况下,在settings.py配置文件中INSTALLED_APPS包含以下应用程序,这些应用程序都是由Django提供:

    django.contrib.admin - 管理网站。你会很快使用它。

    django.contrib.auth - 认证系统。

    django.contrib.contenttypes - 内容类型的框架。

    django.contrib.sessions - 会话框架。

    django.contrib.messages - 消息框架。

    django.contrib.staticfiles - 管理静态文件的框架。

  • 为了后续的开发,默认这些应用程序都是包含在里面的。

  • 使用这些Django自带的应用程序,需要我们在数据库中创建一些数据表对应,然后才能使用它们。为此,请运行以下命令(数据结构迁移):

    • $python3 manage.py migrate
  • 其中该migrate命令查看该INSTALLED_APPS设置,并根据DjangoApp/settings.py文件中的数据库设置和应用程序随附的数据库迁移创建任何必需的数据库表(稍后将介绍)。您会看到适用于每个迁移的消息。

    $ python3 manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying sessions.0001_initial... OK
  • 默认情况下自动在我们的数据库中创建了10张表,具体如下:

    mysql>show tables;+----------------------------+|Tables_in_mydb|+----------------------------+|auth_group||auth_group_permissions||auth_permission||auth_user||auth_user_groups||auth_user_user_permissions||django_admin_log||django_content_type||django_migrations||django_session||stu|+----------------------------+11rowsinset(0.00sec)

2 )创建管理员用户

  • 首先,我们需要创建一个可以登录管理站点的用户。运行以下命令:假设我们设置的密码是123456_admin
    $ python3 manage.py createsuperuser Username(leave blank to use'rwx-robot'): Email address: rwx-robot@gmail.com Password: Password(again): Superuser created successfully.

3 )启动开发服务器

  • 默认情况下,Django管理员站点被激活。让我们开始开发服务器并探索它。
  • 启动开发服务器命令如下: $python3 manage.py runserver 0.0.0.0:8000
  • 现在,打开一个Web浏览器,访问地址: http://0.0.0.0:8000/admin/ 输入我们的用户名/密码即可登录

4 )设置时区和语言

  • 编辑DjangoApp/settings.py配置文件:
    LANGUAGE_CODE='zh-hans'TIME_ZONE='Asia/Shanghai'

5 )将我们自定义的应用程序的加入到后台管理

  • 但我们的自定义应用程序在哪里?并没有显示在后台管理索引页面上。
  • 要做到这一点,打开app/admin.py 文件,并编辑代码如下:
    fromdjango.contribimportadminfromapp.modelsimportStu admin.site.register(Stu)

6 )更深入设计后台管理

  • 编辑app/models.py文件,在Stu类中添加如下信息,让后台管理显示中文字段

    classStu(models.Model):'''自定义Stu表对应的Model类'''#定义属性:默认主键自增id字段可不写id=models.AutoField("学号",primary_key=True)name=models.CharField("姓名",max_length=16)age=models.SmallIntegerField("年龄")sex=models.CharField("性别",max_length=1)classid=models.CharField("班级",max_length=8)# 定义默认输出格式def__str__(self):return"%d:%s:%d:%s:%s"%(self.id,self.name,self.age,self.sex,self.classid)# 自定义对应的表名,默认表名:app_stuclassMeta:db_table="stu"verbose_name='浏览学生信息'verbose_name_plural='学生信息管理'
  • 编辑app/admin.py 文件,实现信息管理的个性化定制

    fromdjango.contribimportadmin# Register your models here.fromapp.modelsimportStu#Stu模型的管理器(装饰器写法)@admin.register(Stu)classStuAdmin(admin.ModelAdmin):#listdisplay设置要显示在列表中的字段(id字段是Django模型的默认主键)list_display=('id','name','age','sex','classid')#设置哪些字段可以点击进入编辑界面list_display_links=('id','name')#list_per_page设置每页显示多少条记录,默认是100条list_per_page=10#ordering设置默认排序字段,负号表示降序排序ordering=('id',)#-id降序#list_editable 设置默认可编辑字段#list_editable = ['age','sex','classid']#其他请详见手册文档说明

源码仓库地址

  • https://github.com/rwx-robot/Django-1.11.11
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 11:10:45

慕慕生鲜Django电商项目源码本地运行指南:从环境搭建到下单实战

简介&#xff1a;基于Spring框架的生鲜电商项目慕慕生鲜源码&#xff0c;面向Java开发者、毕业设计或课程项目实践者。项目采用Maven构建&#xff0c;整合后端Java逻辑、前端静态资源与数据库脚本&#xff0c;可本地运行与调试&#xff0c;适合在个人电脑上开展学习和二次开发。…

作者头像 李华
网站建设 2026/9/7 11:08:22

深入解析fsl-asoc-card.c:理解ASoC机器驱动probe全流程

把一块 i.MX6ULL 板子上的声卡整明白&#xff0c;最绕不开的就是 fsl-asoc-card.c 这个驱动。它是 NXP 平台 ASoC 机器驱动的通用实现&#xff0c;负责把 CPU 侧的 SAI 和外部 Codec “缝”成一张完整的 HiFi 声卡。网上讲 ALSA 和 ASoC 的资料不少&#xff0c;但真到 probe…

作者头像 李华
网站建设 2026/9/7 11:07:15

MATLAB水质预测建模与PID反馈控制闭环实现全攻略

简介&#xff1a;面向供水管网水质建模与控制的Matlab代码包&#xff0c;源自论文《模型预测控制在实时水质调节中有多有效&#xff1f;》&#xff0c;聚焦输配水网络中消毒剂浓度的实时优化问题。代码给出水质控制问题的新型状态空间表示&#xff0c;以及高度可扩展的模型预测…

作者头像 李华
网站建设 2026/9/7 11:04:59

Hive性能调优实战

Hive性能调优多样性 通过改写SQL优化,减少MR任务数 需要理解基本的MR过程和原理,理解HiveSQL是如何转换成计算引擎能运行的算子 多张表关联时,将关联条件相同的表放在一起,只会生成一个MR任务 数据块大小对性能的影响 一般情况下,数据通过网络传输耗费的资源要比本地读写要…

作者头像 李华
网站建设 2026/9/7 11:04:57

2026年51单片机入门指南:从点灯到综合项目的完整学习路径

1. 为什么2026年了&#xff0c;入门还是绕不开51单片机1.1 从STM32退回到51&#xff0c;我重新理解了“入门”两个字很多人一上来就问&#xff1a;现在嵌入式都卷到ARM Cortex-M、RISC-V了&#xff0c;为什么还要学51单片机这种几十年前的东西&#xff1f;我个人的经历是&#…

作者头像 李华