Django框架丨从零开始的Django入门学习

打印 上一主题 下一主题

主题 775|帖子 775|积分 2325

Django 是一个用于构建 Web 应用程序的高级 Python Web 框架,Django是一个高度模块化的框架,使用 Django,只要很少的代码,Python 的程序开发职员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务。
每个 Django App 的构造结构符合 Django 的 MTV 法则——Model(模子)+ Template(模板)+ View(视图),文章内容将从安装开始,对Django每一个模块的操纵进行简单的解说
1. 安装Django

想必大家肯定都安装好python了,如果没有的话网络上很多教程可以参考,安装好python后可以直接在命令行安装Django
  1. pip install django
复制代码
安装完成后,你可以通过运行以下命令验证 Django 是否成功安装:
  1. python -m django --version
复制代码
或通过import进行检查

2. 创建项目

2.1 命令行新建项目

通过终端进入到需要创建项目的指定目次,通过Django的django-admin.py命令新建工程
  1. cd Django
  2. django-admin startproject Hellodjango
复制代码

文件构成
  1. django_news
  2. ├── django_news              // 项目全局文件目录
  3. │   ├── __init__.py
  4. │   ├── asgi.py.py           // ASGI 兼容的 Web 服务器的入口(异步接受网络请求)
  5. │   ├── settings.py          // 全局配置,包括链接数据库等操作
  6. │   ├── urls.py              // 全局路由URL 声明
  7. │   └── wsgi.py              // WSGI 兼容的 Web 服务器的入口(同步接受网络请求)
  8. └── manage.py                // 项目管理脚本
复制代码
2.2 启动服务器(runserver)

创建好后先实验启动服务器看是否成功
  1. # 不定义端口号默认为8000
  2. python manage.py runserver
  3. python manage.py runserver 8888
  4. # 0.0.0.0 让其它电脑可连接到开发服务器
  5. python manage.py runserver 0.0.0.0:8888
复制代码
上面三句都可以启动服务,见到以下接待页面就是安装创建成功了(Django 开发服务器可以保持开启,修改代码会自动重新加载,不需要重新启动服务器,非常方便。)

3 新建应用(startapp)

新建一个App——相当于功能的划分,一个 Django 应用由多个子应用构成,一样寻常称之为 App。
  1. python manage.py startapp new01
复制代码
新建app的文件夹结构如下:
 

  1. new01                     // news 应用目录
  2. ├── migrations           // 数据库迁移变更记录
  3. │   └── __init__.py      
  4. ├── __init__.py          // 初始化模块
  5. ├── admin.py             // 默认自带的后台管理配置
  6. ├── apps.py              // 应用配置
  7. ├── models.py            // 数据模型、数据库操作等
  8. ├── tests.py             // 单元测试
  9. └── views.py             // 视图,url里的函数在这里找
复制代码
3.1 加入配置文件

在Hellodjango/settings.py中找到 INSTALLED_APPS,加入新建app的config

3.2 第一个页面

3.2.1 视图(view)

打开new01/views.py,写一个简单的index,相当于写了一个页面
  1. from django.shortcuts import render
  2. from django.http import HttpResponse
  3. # Create your views here.
  4. def index(request):
  5.     return HttpResponse('Hello Django!')
复制代码
3.2.2 接入路由

下一步是让路由系统能够访问到刚才写好的视图函数,也就是将页面加入到网页中
在Hellodjango/urls.py中,修改Django自带的urlpatterns,通常接收以下三个参数
  1. route:必须,即实际的访问路由,空字符串等于 /,即空路由,展示为首页
  2. view:必须,该路由将要访问的view视图
  3. name:可选,该路由的名称,方便后续在模板中使用
复制代码
  1. from new01 import views
  2. urlpatterns = [
  3.     # path('admin/', admin.site.urls),
  4.     path('index/', views.index)
  5. ]
复制代码

不过固然一个系统的页面会有很多,网页编辑好了之后将路由加到urls.py的urlpatterns中就可以了
可以看到urls.py文件中,有一行path('admin/', admin.site.urls),取消注释访问http://127.0.0.1:8888/admin已经可以看到后台系统的登录页面

但此时还没有毗连数据库,别的内容到后面讲述4.数据库的时候再进行操纵
3.3 加入网页(templates,render)

在django项目目次下新建一个templates文件夹,文件夹下面放入html文件

把templates加入到路径中(settings.py的TEMPLATES),由于默认情况下会放到app下的templates里面

写一个简单的网页web01.html
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset=="UTF-8">
  5.     <title>Title</title>
  6. </head>
  7. <body>
  8.     <div>This is a web</div>
  9. </body>
  10. </html>
复制代码
将网页写入到views.py中:在这里我们使用render函数,第一个参数为request,第二个参数是文件名,第三个参数可以不要,是把文件中用{{}}标起来的内容更换的功能。
  1. def web01(request):
  2.     return render(request, "web01.html")
复制代码
再添加到urls.py
  1. from new01 import views
  2. urlpatterns = [
  3.     # path('admin/', admin.site.urls),
  4.     path('index/', views.index),
  5.     path('web/', views.web01)
  6. ]
复制代码
此时输入网址,可以看到网页接入成功,其他的样式等可以按照CSS 、html的语法进行添加修改web01.html文件

此时输入端标语,可以看到对应的两个页面都在

4.数据库

Django 的 MTV,我们已经讲了 T(Template)和 V(View),到了最后一个 M(Model)了。数据模子是 Django 入门最大的难点,这一步之后便能真正上手 Django 开发。下面我们先介绍一下 Django 的数据模子计划。
Django 在数据模子方面的特点:


  • 由于高度解耦的计划,可轻松切换各种关系型数据库(默认的 SQLite,可选 MySQL、PostgreSQL、Oracle 等等)
  • 强大的 ORM(Object Relation Mapping,对象关系映射)模块,使得用 Python 操纵数据库非常轻松,免去了使用 SQL 的麻烦
  • 优秀的数据库迁移机制(Migration),修改数据模式(Schema)比力方便,能够顺应不停变革的功能需求
4.1 开发流程

一样寻常数据模子开发流程如下:

  • 用 Django 界说一个新的数据模子(在new01/models.py中)
  • 用 makemigrations 命令创建迁移文件(存储在子应用的 migrations 目次里面)
  • 用 migrate 命令执行迁移
    (如后续发现界说有问题或不完善,可以更新数据模子,再重新进行23操纵完成数据迁移)
4.2 实现一个简单的模子

4.2.1 创建数据模子

在new01/models.py中,界说数据模子以及你需要的字段,可以先任意界说两个简单的字段进行实验,代码如下:
  1. from django.db import models
  2. # Create your models here.
  3. class Post(models.Model):
  4.     # 根据模型自动值数据库中创建一个对应的表,此表包括title, name两个字段
  5.     title = models.CharField(max_length=50)
  6.     name = models.CharField(max_length=50)
  7.     def __str__(self):
  8.         return self.title
复制代码
界说好后再命令行执行如下命令,创建迁移文件:
  1. python manage.py makemigrations
复制代码

通过输出可以看到,成功创建了 new01/migrations/0001_initial.py 迁移脚本,再进行下一步数据库迁移:
  1. python manage.py migrate
复制代码
数据库迁移完成后,我们就可以创建用于登录后台管理的超等用户:
  1. python manage.py createsuperuser
复制代码
 按照提示步骤输入用户名和密码创建成功就行
4.2.2 后台管理配置

此时再输入前面提到的http://127.0.0.1:8888/admin后台管理页面,就可以通过刚刚创建的超等用户登录查看了

但进入页面可以看到,没有我们创建的应用和模子:

 这是由于没有实现后台管理的接口配置,在文件new01/admin.py中接口配置如下:
  1. from django.contrib import admin
  2. from .models import Post
  3. # Register your models here.
  4. admin.site.register(Post)
复制代码
再革新页面可以看到应用new01和模子Posts

 点击 Posts 一栏的 +Add 按钮,任意添加几条数据,也可以看看修改、添加、删除等功能。

4.2.3 视图与数据毗连

新建一个网页html文件,这里用先前用于测试的web01.html

在views.py中绑定好页面与数据
  1. from django.shortcuts import render
  2. from .models import Post
  3. def show_name(request):
  4.     context = {'name_list': Post.objects.all()}
  5.     return render(request, 'web01.html', context=context)
复制代码
中html文件中写好渲染数据的语法:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset=="UTF-8">
  5.     <title>Title</title>
  6. </head>
  7. <body>
  8.     {% if name_list %}
  9.       <ul>
  10.       {% for elem in name_list %}
  11.         <li>
  12.           <h3>{{ elem.title }}</h3>
  13.           <p>{{ elem.name }}</p>
  14.         </li>
  15.       {% endfor %}
  16.       </ul>
  17.     {% else %}
  18.       <p>no data</p>
  19.     {% endif %}
  20. </body>
  21. </html>
复制代码
最后不要忘记中urls.py中添加新设置好的视图
  1. from django.urls import path
  2. from new01 import views
  3. urlpatterns = [
  4.     path('name/', views.show_name),
  5. ]
复制代码
最后访问界说好的路由http://127.0.0.1:8888/name,就可以看到刚才在后台管理系统中添加的数据了


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

涛声依旧在

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表