Django_ 学员管理后台系统开发 (二)

本贴最后更新于 1737 天前,其中的信息可能已经渤澥桑田

继上次的内容,我们继续 🚄

1.前端页面

view.py


from django.shortcuts import render

# Create your views here.

def index(request):

words = 'Hi,guys'

return render(request, 'index.html', context={'words':words})

定义了函数 index,接受 request 参数(这是对用户发过来的 http 请求的封装)

render 函数顾名思义,即将内容渲染到模版

index.html 就是 templates 模版,Django 会在每个在 settings 里面注册的应用中寻找当前应用的模版,顺序是自上而下,所以这边我们自己手动建立一个 templates 文件夹,并在里面创建 index.html,内容如下:

index.html


<html>

<head>

<title>学员管理平台-by mufengs</title>

</head>

<body>

2019 {{ words }}

</body>

</html>

这边的{{ words }}就是取 view.py 那边 words 的值

urls.py

配置访问路由规则


from django.conf.urls import url

from django.contrib import admin

from django.urls import path

from student_sys.views import index

urlpatterns = [

url(r'^$', index, name='index'),

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

]

访问:http://127.0.0.1:8000/

就会出现下面的输出内容了
image.png

2.操作数据库

通过操作数据库,将内容渲染到页面上

修改 view.py


from django.shortcuts import render

from .models import Student

# Create your views here.

def index(request):

students = Student.objects.all()

return render(request, 'index.html', context={'students':students})

从数据库中取出学员信息,接下来修改我们的模版


<html>

<head>

<title>学员管理平台-by mufengs</title>

</head>

<body>

<ul>

{% for student in students %}

<li>{{ student.name }} - {{ student.get_status_display }}</li>

{% endfor %}

</ul>

</body>

</html>

这边发现上次文章中的一个问题,注册 app 的时候写错了,所以这边一直报错过不去


RuntimeError: Model class student_sys.models.Student doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS

因为表是空的,所以页面打开是空白的

接下来我们来实现提交功能,创建一个 form.py 和 view.py 同级


from django import forms

from .models import Student

# 方法一

# class StudentForm(forms.Form):

# name = forms.CharField(label='name', max_length=128)

# sex = forms.ChoiceField(label='sex', choices=Student.SEX_ITEMS)

# profession = forms.CharField(label='profession', max_length=128)

# email = forms.EmailField(label='email', max_length=128)

# qq = forms.CharField(label='qq', max_length=128)

# phone = forms.CharField(label='phone', max_length=128)

#

# 方法二

class StudentForm(forms.ModelForm):

class Meta:

model = Student

fields = (

'name', 'sex', 'profession',

'email', 'phone', 'qq'

)

这边用了两种方法来实现,很明显第二种方法更方便

加入表单验证

最后的视图部分代码如下

views.py


from django.http import HttpResponseRedirect

from django.shortcuts import render

from django.urls import reverse

from student_sys.form import StudentForm

from .models import Student

# Create your views here.

def index(request):

students = Student.get_all()

if request.method == 'POST':

form = StudentForm(request.POST)

if form.is_valid():

# cleaned_data = form.cleaned_data

# student = Student()

# student.name = cleaned_data['name']

# student.sex = cleaned_data['sex']

# student.email = cleaned_data['email']

# student.profession = cleaned_data['profession']

# student.qq = cleaned_data['qq']

# student.phone = cleaned_data['phone']

# student.save()

form.save()

return HttpResponseRedirect(reverse('index'))

else:

form = StudentForm()

context = {

'students': students,

'form': form

}

return render(request, 'index.html', context=context)

模版文件如下


<html>

<head>

<title>学员管理平台-by mufengs</title>

</head>

<body>

<h3><a href="/admin/">Admin</a></h3>

<ul>

{% for student in students %}

<li>{{ student.name }} - {{ student.get_status_display }}</li>

{% endfor %}

</ul>

<form action="/" method="post">

{% csrf_token %}

{{ form }}

<input type="submit" value="Submit" />

</form>

</body>

</html>

又到了最后的效果时间了,曾经有人和我说过,做开发最开心的时候,做出一个功能,是有一种别人理解不了的成就感

当然我不是一个开发,我也没有所谓的成就感,只是兴趣使然,做自己喜欢的事情

后台

image.png
前台

image.png

今天就搞这些吧,还需要多理解多消化,盲目的跟着书本敲代码,也没多大用处

@lizhongyue248 你那个问题就一个标签的事情,没有那么复杂啊,聊天发不了标签 @88250 ,所以这边顺便给你看下我的

<amp-auto-ads type="adsense"
              data-ad-client="xxx">
</amp-auto-ads>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="xxx"
     data-ad-slot="xxx"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
  • Django
    47 引用 • 72 回帖 • 4 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    535 引用 • 672 回帖 • 2 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
请输入回帖内容 ...
yuanhenglizhen
笔落兴亡定三端之妙,墨写清白尽六艺之奥

推荐标签 标签

  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    3 引用 • 80 回帖 • 1 关注
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    18594 引用 • 69198 回帖
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 547 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    76 引用 • 421 回帖
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    90 引用 • 383 回帖 • 1 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 8 关注
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 682 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    180 引用 • 400 回帖 • 1 关注
  • 996
    13 引用 • 200 回帖 • 1 关注
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    11 引用 • 5 回帖 • 563 关注
  • 笔记

    好记性不如烂笔头。

    303 引用 • 777 回帖
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 7 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    85 引用 • 1201 回帖 • 455 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    131 引用 • 3639 回帖
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    57 引用 • 22 回帖
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    60 引用 • 287 回帖 • 1 关注
  • 安装

    你若安好,便是晴天。

    128 引用 • 1184 回帖 • 1 关注
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    131 引用 • 1114 回帖 • 150 关注
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    51 引用 • 226 回帖
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖 • 24 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖 • 1 关注
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 243 关注
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    169 引用 • 799 回帖