我的编程空间,编程开发者的网络收藏夹
学习永远不晚

基于Django1.11和Python3

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

基于Django1.11和Python3

一、创建一个VotingSystem项目以及polls应用

$ django-admin.py startproject VotingSystem
$ cd VotingSystem
$ python3 manage.py startapp polls

注:如果使用Pycharm来创建的话,以上两步都可以省略


二、配置tempaltes路径(如果没有)

a. 先在VotingSystem项目目录下新建一个templates文件夹,注意文件夹权限和属组

$ sudo mkdir templates

b. 然后再setting.py文件中添加路径

TEMPLATES = [
    {
        ...
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ...
    },
]


三、将应用名称添加到setting.py文件INSTALLED_APPS选项末尾(如果没有)

INSTALLED_APPS = [
...
'polls',
]

注:以上两步如果用Pycharm都可以一步到位


四、编辑polls/model.py,创建数据库模型

from django.db import models

# 问题
class Question(models.Model):
    question_text = models.CharField(max_length=200)
    
   # 双引号中定义的是在admin页面显示的verbose_name
    pub_date = models.DateTimeField("date published")  
    
    def __str__(self):
        return self.question_text

# 问题选项
class Choice(models.Model):
    question = models.ForeignKey("Question")
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)
    
    def __str__(self):
        return self.choice_text


五、同步数据库,生成数据库表(这里使用的是默认的sqlite3)

$ python3 manage.py makemigrations
$ python3 manage.py migrate


六、生成admin管理账户

$ python3 manage.py createsuperuser


七、将model注册到admin中

from django.contrib import admin
from .models import *

class ChoiceInline(admin.TabularInline):
    model = Choice
    extra = 3  # 在admin页面显示额外三个空白表单

class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None, {'fields': ['question_text']}),
        ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
    ]
    inlines = [ChoiceInline,]  # 在admin页面显示内联
    list_display = ('question_text', 'pub_date')

admin.site.register(Question, QuestionAdmin)
admin.site.register(Choice)


八、启动server,进入admin页面,创建一些问题和选项

$ python3 manage.py runserver

wKiom1nbYXaTcdbFAAB5gZkafWA588.jpg-wh_50

wKiom1nbYduwsdzcAABxkzNKu34711.jpg-wh_50

wKioL1nbYYqRFAbQAAC0ZmMUnE0323.jpg-wh_50


九、编辑VotingSystem/urls.py,使用路由分发和命名空间

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^polls/', include("polls.urls", namespace="polls")),
]


十、编辑polls/urls.py

from django.conf.urls import url
from polls import views

urlpatterns = [
    url(r'^$', views.index, name="index"),
    url(r'^(?P<question_id>[0-9]+)/$', views.detail, name="detail"),
    url(r'^(?P<question_id>[0-9]+)/results/$', views.results, name="results"),
    url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, name="vote"),
]


十一、编辑polls/views.py视图文件

from django.shortcuts import render, get_object_or_404, HttpResponseRedirect, reverse, redirect
from .models import *

# 首页,展示所有问题
def index(req):
    lastest_question_list = Question.objects.all()
    return render(req, "polls/index.html", locals())

# 展示单个问题的所有选项
def detail(req, question_id):
    question = get_object_or_404(Question, pk=question_id)
    return render(req, "polls/detail.html", locals())

# 查看投票结果,   
def results(req, question_id):    
    question = get_object_or_404(Question, pk=question_id)    
    return render(req, "polls/results.html", locals())    
   

# 选择投票,设置cookie验证
def vote(req, question_id):    
    p = get_object_or_404(Question, pk=question_id)    
    if req.COOKIES.get("is_vote", None):    
        return render(req, "polls/detail.html", {"question": p, "error_message": "你已经投过票了!"})    
    try:    
        selected_choice = p.choice_set.get(pk=req.POST['choice'])    
    except (KeyError, Choice.DoesNotExist):    
        return render(req, "polls/detail.html", {"question": p, "error_message": "You did't select a choice"})    
    else:    
        selected_choice.votes += 1    
        selected_choice.save()    
        rep = redirect(reverse("polls:results", args=(p.id,)))    
        rep.set_cookie("is_vote", True)    
        return rep


十二、在templates目录下创建polls目录,在polls目录下创建index.html detail.html results.html三个HTML文件

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% if lastest_question_list %}
    <ul>
        {% for question in lastest_question_list %}
            <li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>
        {% endfor %}
    </ul>
{% else %}
    <p>No polls are avaiable.</p>
{% endif %}
</body>
</html>

detail.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>{{ question.question_text }}</h1>
{% if error_message %}
    <p><strong>{{ error_message }}</strong></p>
{% endif %}
<form action="{% url 'polls:vote' question.id %}" method="post">
    {% csrf_token %}
    {% for choice in question.choice_set.all %}
        <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}"/>
        <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br/>
    {% endfor %}
    <input type="submit" value="提交"/>
</form>
</body>
</html>


results.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>{{ question.question_text }}</h1>
<ul>
    {% for choice in question.choice_set.all %}
        <li>
            {{ choice.choice_text }} --> {{ choice.votes }} vote{{ choice.votes|pluralize }}
        </li>
    {% endfor %}
</ul>
<a href="{% url 'polls:detail' question.id %}">再次投票</a>
<a href="{% url 'polls:index' %}">返回首页</a>
</body>
</html>

十三、至此我们所有配置都已经配置完毕了,马上运行server,进行访问吧

http://127.0.0.1:8000/polls/


十四、githup源码地址: https://github.com/daibaiyang119/VotingSystem


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

基于Django1.11和Python3

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

基于Django1.11和Python3

一、创建一个VotingSystem项目以及polls应用$ django-admin.py startproject VotingSystem$ cd VotingSystem$ python3 manage.py startapp po
2023-01-31

Docker(十八)基于python3.

dockerfile 如下FROM rlesouef/alpine-python-3.5RUN echo -e "https://mirrors.aliyun.com/alpine/v3.7/main" > /etc/apk/reposit
2023-01-31

基于OpenCV-python3实现抠图

在上一篇博客进行了证件照更换背景颜色,纯蓝色,红色,白色之间的替换,有人私信我,可以不可以把背景换成其他图片,而不是单纯的颜色填充。这在photoshop里面就是选中一个图层然后复制到另外一张图片上去,用代码实现的话和上篇博文换纯色背景思路
2023-01-31

python3下关于copy和deepc

很多人在学习python3的时候,在字典部分copy和deepcopy感到很困惑,现在针对这两个方法进行区分,即一种是浅复制(copy),一种是深度复制(deepcopy)。开头先下个结论我们日常所说的复制(自己在电脑硬盘上的复制)就是深复
2023-01-31

基于Python3 神经网络的实现

本次学习是Denny Britz(作者)的Python2神经网络项目修改为基于Python3实现的神经网络(本篇博文代码完整)。重在理解原理和实现方法,部分翻译不够准确,可查看Python2版的原文。原文英文地址(基于Python2)安装P
2023-01-31

基于Python3的漏洞检测工具 ( P

[TOC]lance, a simple version of the vulnerability detection framework based on Python3.基于Python3的简单版漏洞检测框架 -- lance可以自定义
2023-01-31

基于 Python 和 Pandas 的

Pandas 是 Python 的一个模块(module), 我们将用 Python 完成接下来的数据分析的学习. Pandas 模块是一个高性能,高效率和高水平的数据分析库.从本质上讲,它非常像操作电子表格的无头版本,如Excel. 我们
2023-01-30

Python环境(基于Pycharm和官

1.下载安装包python官网下载3.7.2Pycharm 社区版下载安装2.直接使用Pycharm自带virtualEnvFile - Settings - Project - Project Interpreter - (右侧的齿轮)A
2023-01-31

Python3的一些基础语法介绍和理解

作者:心叶时间:2018-04-23 22:18此处长期维护一些对帮助快速使用python3的一些基础语法,方便日常算法练习使用。break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何
2023-01-31

如何配置LINUX系统apache基于IP,基于port和基于域名的三种虚拟主机

这篇文章主要介绍“如何配置LINUX系统apache基于IP,基于port和基于域名的三种虚拟主机”,在日常操作中,相信很多人在如何配置LINUX系统apache基于IP,基于port和基于域名的三种虚拟主机问题上存在疑惑,小编查阅了各式资
2023-06-10

基于shell的if和else详解

基本语法 shell的if语法和C语言等高级语言非常相似,唯一需要注意的地方就是shell的if语句对空格方面的要求比较严格(其实shell对所有语法的空格使用都比较严格),如果在需要空格的地方没有打上空格,都会报错。如if [ $1x =
2022-06-04

人脸检测——基于Flask和PaddleHub

这篇文章详细介绍了基于Flask和PaddleHub来进行人脸检测,想详细了解的朋友可以参考阅读
2023-03-23

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录