返回顶部
首页 > 资讯 > 后端开发 > Python >基于Django1.11和Python3
  • 716
分享到

基于Django1.11和Python3

2023-01-31 08:01:42 716人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

一、创建一个VotingSystem项目以及polls应用$ Django-admin.py startproject VotingSystem $ cd VotingSystem $ python3 manage.py startapp 

一、创建一个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


--结束END--

本文标题: 基于Django1.11和Python3

本文链接: https://lsjlt.com/news/192632.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 基于Django1.11和Python3
    一、创建一个VotingSystem项目以及polls应用$ django-admin.py startproject VotingSystem $ cd VotingSystem $ python3 manage.py startapp ...
    99+
    2023-01-31
  • Docker(十八)基于python3.
    dockerfile 如下FROM rlesouef/alpine-python-3.5 RUN echo -e "https://mirrors.aliyun.com/alpine/v3.7/main" > /etc/apk/rep...
    99+
    2023-01-31
    Docker
  • 基于OpenCV-python3实现抠图
    在上一篇博客进行了证件照更换背景颜色,纯蓝色,红色,白色之间的替换,有人私信我,可以不可以把背景换成其他图片,而不是单纯的颜色填充。这在photoshop里面就是选中一个图层然后复制到另外一张图片上去,用代码实现的话和上篇博文换...
    99+
    2023-01-31
    抠图 OpenCV
  • 基于Python3中运算符 **和*的区别说明
    我们知道**代表次方。 如下 >>>12 * 12 144 >>>12 ** 2 144 >>>a=1e200 >...
    99+
    2024-04-02
  • 基于python3+OpenCV实现人脸和眼睛识别
    基于python3+OpenCV的人脸和眼睛识别,供大家参考,具体内容如下 一、OpenCV人脸检测的xml文件下载 人脸检测和眼睛检测要用到haarcascade_eye.xml和...
    99+
    2024-04-02
  • python3下关于copy和deepc
         很多人在学习python3的时候,在字典部分copy和deepcopy感到很困惑,现在针对这两个方法进行区分,即一种是浅复制(copy),一种是深度复制(deepcopy)。开头先下个结论我们日常所说的复制(自己在电脑硬盘上的复制...
    99+
    2023-01-31
    copy deepc
  • 基于Python3 神经网络的实现
    本次学习是Denny Britz(作者)的Python2神经网络项目修改为基于Python3实现的神经网络(本篇博文代码完整)。重在理解原理和实现方法,部分翻译不够准确,可查看Python2版的原文。原文英文地址(基于Python2)安装P...
    99+
    2023-01-31
    神经网络
  • 基于Python3编写一个GUI翻译器
    目录1、引言2、代码实战2.1 思路2.2 实战3、总结1、引言 小屌丝:鱼哥,你说百度翻译的准确,还是google翻译的准确? 小鱼:自己翻译的最准确。 小屌丝:你这&hellip...
    99+
    2024-04-02
  • 基于Python3的漏洞检测工具 ( P
    [TOC] lance, a simple version of the vulnerability detection framework based on Python3. 基于Python3的简单版漏洞检测框架 -- lance 可...
    99+
    2023-01-31
    漏洞 检测工具
  • Python3基础
    一、Python3语法基础 1、Python3编码 默认情况下,Python 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串,可以为Python源码文件指定不同的编码,如下: # -*- coding: ut...
    99+
    2023-01-31
    基础
  • 关于 Python3 ThreadPoo
    【背景】    截至 Python 3.6.6,concurrent.futures.ThreadPoolExecutor 中用的都是无·界队列,在生产速度大于消费速度时,可能会耗光系统资源,希望找到一种方式避免这种情况。【方案一】继承 T...
    99+
    2023-01-31
    ThreadPoo
  • 【Python3】HTML基础
    一、BS模式 BS(Browser-Server)模式:顾名思义为浏览器-服务器的意思,对比的话类似我们PC上面浏览器使用的产品即为BS模式产品,例如google doc、各类网站等。 服务端开启一个socke进程 #!/usr/bin...
    99+
    2023-01-31
    基础 HTML
  • 基于 Python 和 Pandas 的
    Pandas 是 Python 的一个模块(module), 我们将用 Python 完成接下来的数据分析的学习. Pandas 模块是一个高性能,高效率和高水平的数据分析库. 从本质上讲,它非常像操作电子表格的无头版本,如Excel....
    99+
    2023-01-30
    Python Pandas
  • 关于 python3 下 mysqld
    long long ago 刚接触 python 的时候, 就遇到过 mysqldb 的诡异问题, 奈何国内博客上写的都是 python2 下的解决方法, 无奈只好不停查阅 那时的我得出的结论: mysqldb 已经不再支持 pytho...
    99+
    2023-01-31
    mysqld
  • Python基础--Python3基础语
    Python3 基础语法编码默认情况下,Python3源码文件以UTF-8编码,所有字符串都是Unicode字符串。当然也可以为源码文件指定不同的编码,例如:# -*- coding: cp-1252 -*-标识符1.第一个字符必须是字母表...
    99+
    2023-01-31
    基础 Python
  • 【Python3】初识Python、基
    1. python介绍 发展史等等.... 减少开发成本 2. python与其他语言对比 C语言:代码-->机器码 其他高级语言:代码-->字节码-->机器码 3. python种类 cpython:常用的py...
    99+
    2023-01-31
    Python
  • python3基础知识
    字符串截取:利用下标进行截取py_str = 'python'len(py_str)py_str[:3] py_str + '123''python123'py_str * 3'pythonpythonpython' Str将数...
    99+
    2023-01-31
    基础知识
  • python3基础链接
    python3的基础知识都在博客园中链接:1、python之number2、python之Character string3、python之List4、python之tuple5、python之dictionary6、python之set7...
    99+
    2023-01-31
    链接 基础
  • python3 基础语法
    python相关文章请移步简书:http://www.jianshu.com/u/a72d0d3b2176 ...
    99+
    2023-01-31
    语法 基础
  • python3-基本数学
    import math print(math.trunc(3.485))#取整数 print(math.pow(3,4))#乘方 print(math.pi) print(math.sqrt(100))#开方 print(math.log(...
    99+
    2023-01-31
    数学
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作