国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Django實際應用-投票程序(三)

IT那活兒 / 1972人閱讀
Django實際應用-投票程序(三)

點擊上方“IT那活兒”,關注后了解更多內容,不管IT什么活兒,干就完了!!!


01


model模型


1.1 ORM架構介紹

  • object :對象﹐對應django模型中的class
  • Relationship:關系﹐對應關系型數據庫
  • Mapping:映射
  • 一個class對應數據庫中的一張表
  • 表中的字段與class中的類變量對應
  • 數據庫中的數據類型也與django模型中的類映射
  • 表中的每個記錄都與class的實例對應

1.2 編寫models.py

from django.db import models

# Create your models here.

class Question(models.Model):

question_text = models.CharField(max_length=200, unique=True)

pub_date = models.DateTimeField() #不加Field,沒有時分秒

class Chioce(models.Model):

chioce_text = models.CharField(max_length=200, unique=True)

votes = models.IntegerField(default=0)

question = models.ForeignKey(Question) #如果想要修改字段名,在配置文件中修改之后,重新生成表

1.3 生成表

python manage.py makemigrations

python manage.py migrate

1.4 將模型加入到后臺頁面

# polls/admin.py

from  django.contrib import  admin# 在當前目錄下的models模塊中導入模型

from .models import   Question, Choice

# Register your models here.

admin.site.register(Question)

admin.site.register(Choice)

1.5 問題解決辦法

class Question(models.Model):

question_text = models.CharField(max_length=200, unique=True)

pub_date = models.DateTimeField()

def __str__(self):

return question:%s % self.question_text

class Chioce(models.Model):

chioce_text = models.CharField(max_length=200, unique=True)

votes = models.IntegerField(default=0)

question = models.ForeignKey(Question)

def __str__(self):

return %s:%s % return %s:%s % (self.question,self.chioce_text)

02


Django API(首頁)



2.1 在views文件中把問題取出來傳給html

# polls/views.py

from django.shortcuts import render

from .models import Question

def index(request):

  questions = Question.objects.order_by(-pub_date)

returnrender(request, index.html, {questions: questions})

2.2 編輯index.html



<htmllang="en">

<head>

<metacharset="UTF-8">

<title>投票首頁title>

head>

<body>

<div class="container">

<div class="content">

<h1>投票首頁h1>

<ol>

{% for question in questions %}

<li>

<a href="{% url a question.id %}" target="_blank">
#question_id是views.py中的d+這個參數,數據庫中沒有指定主鍵時Django會自動創建主鍵,question_id就是問題的id號

{{ question.question_text }}a>

     {{ question.pub_date }}

li>

{%endfor%}

ol>

div>

div>

body>

html>

2.3 可以添加輪播圖

<div class="container">

<div id="linux-carousel" class="carousel slide">

<ol class="carousel-indicators">

<li class="active" data-target="#linux-carousel" data-slide-to="0">li>  #輪播圖下面的小圓點

<li data-target="#linux-carousel" data-slide-to="1">li>

<li data-target="#linux-carousel" data-slide-to="2">li>

ol>

<div class="carousel-inner">

<div class="item active">

<a href="http://www.sogou.com" target="_blank">

<img src="{% static imgs/first.jpg %}">

a>

div>

<div class="item">

<img src="{% static imgs/second.jpg %}">

div>

<div class="item">

<img src="{% static imgs/third.jpg %}">

div>

div>

<a href="#linux-carousel" data-slide="prev" class="carousel-control left"> <span class="glyphicon glyphicon-chevron-left">span>    #向左翻



制作投票詳情頁

a>

<a href="#linux-carousel" data-slide="next" class="carousel-control right"> <span class="glyphicon glyphicon-chevron-right">span>   #向右翻

a>

div>

<script src="{% static js/jquery.min.js %}">script>    #要有JS代碼才能實現輪播圖

<script src="{% static js/bootstrap.min.js %}">script>

<script type="text/javascript">

2.4 模板繼承(為了避免一些網頁的重復代碼)

1)復制index.html一本命令為bak.html

# 在basic.html中,將個性(不相同)內容用block替代

{% load static %}



<html lang="en">

<head><meta charset="UTF-8">

<title>{% block title %}{% endblock %}title>

<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="stylesheet" href="{% static css/bootstrap.min.css %}">

head>

<body>

<div class="container">

<div id="linux-carousel" class="carousel slide">

<ol class="carousel-indicators">

<li class="active" data-target="#linux-carousel" data-slide-to="0">li>

<li data-target="#linux-carousel" data-slide-to="1">li>

<li data-target="#linux-carousel" data-slide-to="2">li>

ol>

<div class="carousel-inner">

<div class="item active">

<a href="http://www.sogou.com" target="_blank">

<img src="{% static imgs/first.jpg %}">   #圖片放在polls下static目錄的imgs目錄中

a>

div>

<div class="item">

<img src="{% static imgs/second.jpg %}">

div>

<div class="item">

<img src="{% static imgs/third.jpg %}">

div>

div>

<a href="#linux-carousel" data-slide="prev" class="carousel-control left"> <span class="glyphicon glyphicon-chevron-left">span>



制作投票詳情頁 a>

<a href="#linux-carousel" data-slide="next" class="carousel-control right"> <span class="glyphicon glyphicon-chevron-right">span>

a>

div>

{% block content %}{% endblock %}

<script src="{% static js/jquery.min.js %}">script>

<script src="{% static js/bootstrap.min.js %}">script>

<script type="text/javascript">script>

body>

html>

2)index.html

# 修改index.html,把共性內容刪除,個性內容寫到對應的block中

{% extends bak.html %} #繼承

{% load static %}

{% block title %}投票首頁{% endblock %}

{% block content %}

class="content h4">

class="text-center text-warning">投票首頁



    "margin: 20px 0">

    {% for question in questions %}

  1. "{% url detail question.id %}" target="_blank">

    {{ question.question_text }}
    {{ question.pub_date }}

  2. {% endfor %}





{% endblock %}

03


制作a.html(次頁)


3.1 編輯views.py

from django.shortcuts import render

from .models import Question, Chioce

# Create your views here.

def index(request):

d = Question.objects.order_by(-pub_date)

return render(request,index.html,{d:d})

def a(request,question_id):

c = Question.objects.get(id=question_id)

return  render(request,a.html,{id:c})

def result(request,id):

return  render(request,result.html,{id:id})

3.2 編輯a.html(取出選項)

{% extends bak.html%}

{% load static %}

{% block title%}polls{%endblock%}

{% block content%}

<div class="container">

<h1>{{ id.id }}h1>

div>

<div class="content h4 text-warning"  >

<h1 class="text-center">chioceh1>

<h2>{{ id }}h2>

<form action="">
      {% csrf_token %} #安全選項

{% for i in id.chioce_set.all %}

<div class="radio">

<label >

<input type="radio" name="chioce_id" value="{{ chioce_id }}">

{{ i.chioce_text }}

label>

div>

{% endfor %}

form>

div>

<div class="group">

<input  class="btn btn-primary" tpye="submit" value="submit">

div>

{%endblock%}

04


實現投票功能


實現數據庫的增刪改查。執行函數對model模型的操作(url-->views-->model)

4.1 配置urls.py

from django.conf.urls import url,include

from django.contrib import admin

from . import  views



urlpatterns = [

url(r^$, views.index,name=index),

url(r(d+)/$, views.a,name=a),

url(r(d+)/result/$, views.result,name=result),

url(r(d+)/vote/$, views.vote,name=vote),

]

4.2 配置views.py

from django.shortcuts import  render, redirect

from .models import Question, Chioce

# Create your views here.

def index(request):

d = Question.objects.order_by(-pub_date)

return render(request,index.html,{d:d})

def a(request,question_id):

c = Question.objects.get(id=question_id)

return  render(request,a.html,{id:c})

def result(request,id):

return  render(request,result.html,{id:id})

def vote(request,id):

d = Question.objects.get(id=id) #取出問題

# 當用戶提交表單時,request.POST是一個字典,里面記錄了與POST相關的數據

# choice_id是detail.html頁面中單選按鈕的name,值是選項的id(value的值)

chioce_id = request.POST.get(chioce_id) #取出name的值

chioce = d.chioce_set.get(id=chioce_id) #取出對用id的項

chioce.votes += 1

chioce.save()

# 這里返回使用的不是render,因為render直接返回頁面,URL不變,也就是http://x.x.x.x/polls/2/vote顯示的是2號問題的投票結果,這是不合理的應該由http://x.x.x.x/polls/2/result/顯示投票結果。所以使用redirect

return redirect(result,id)

4.3 配置a.html

{% extends bak.html%}

{% load static %}

{% block title%}polls{%endblock%}

{% block content%}

<div class="container">

<h1>{{ id.id }}h1>

div>

<div class="content h4 text-warning"  >

<h1 class="text-center">chioceh1>

<h2>{{ id }}h2>

<form action="{% url vote id.id %}" method="post">

{% csrf_token %}

{% for i in id.chioce_set.all %}

<div class="radio">

<label >

<input type="radio" name="chioce_id" value="{{ i.id }}">

{{ i.chioce_text }}

label>

div>

{% endfor %}

<div class="form-group">

<input  class="btn btn-primary" type="submit" value="submit">

div>

form>

div>



{%endblock%}


05


配置result.html


5.1 views.py

from django.shortcuts import  render, redirect

from .models import Question, Chioce

# Create your views here.

def index(request):

d = Question.objects.order_by(-pub_date)

return render(request,index.html,{d:d})

def a(request,question_id):

c = Question.objects.get(id=question_id)

return  render(request,a.html,{id:c})

def result(request,id):

d = Question.objects.get(id=id)

return  render(request,result.html,{id:d})

def vote(request,id):

d = Question.objects.get(id=id)

chioce_id = request.POST.get(chioce_id)

chioce = d.chioce_set.get(id=chioce_id)

chioce.votes += 1

chioce.save()

return redirect(result,id)

5.2 配置resul.html

{% extends bak.html%}

{% load static %}

{% block title%}投票結果{%endblock%}

{% block content%}

<div>

<h1 class="text-center">{{ id.id }}投票結果h1>

<table class="table table-striped table-hover">

<thead class="bg-primary">

<tr>

<td colspan="2">{{ id.question_text }}td>

tr>

thead>

{% for i in id.chioce_set.all %}

<tr>

<td>{{ i.chioce_text }}td>

<td >{{ i.votes }}td>

tr>

{%endfor%}

table>



div>

{%endblock%}

end




本文作者:周世豪

本文來源:IT那活兒(上海新炬王翦團隊)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129646.html

相關文章

  • Django 2.0 - 創建第一個Django應用 - 第一部分

    摘要:創建投票應用采用創建的工程包括兩個層級,一個是叫工程,另外一個是工程下面的應用。一個工程可以包含多個應用。路由配置分成兩個層級,一個是在應用層配置路由,另外一個是在工程層配置路由。 一般Django的網絡程序開發步驟 配置開發的環境 初始化項目 啟動開發服務器 創建應用 創建View 配置訪問View的路由 配置項目開發環境 開發一個新的項目,第一步就是配置項目的開發環境。這里使用...

    TalkingData 評論0 收藏0
  • 兩篇文章幫你入門Django(上)

    摘要:本文結合官方文檔中的個小教程,幫你了解。一共分上下兩篇文章,上篇主要來分析處理的機制,下篇來介紹下提供的后臺管理,以及單元測試等強大的功能。項目創建成功之后,可以運行生成相應的數據庫表是引入的命令,較早的版本可以用其他的命令代替。 原文地址 相信用過python的人都聽過Django的大名,知道它是一個web框架,用來支持動態網站、網絡應用程序以及網絡服務的開發。那么為什么我們需要...

    shuibo 評論0 收藏0
  • Kubernetes和OpenStack的多云端網絡

    摘要:上周,在舉行的上,發布,整合和。多虧存儲應用程序會話到數據庫通常來說是下載安裝或者是,我們不需要特定的負載均衡器,運行完全沒有問題。用負載均衡器描述的展示了浮動和私有集群。特別感謝來自的的支持和在測試過程中作出的貢獻。 上周,在Austin舉行的OpenStack Summit上,CoreOS發布Stackanetes,整合Kubernetes和OpenStack。 一個月前,Core...

    Hwg 評論0 收藏0
  • Python測試開發中Django和Flask框架的區別

    摘要:在談中框架和框架的區別之前,我們需要先探討如下幾個問題。通過大數據統計分析全球著名的網站對和這兩個框架的調查分析。從全球著名的代碼托管平臺上的和數量上分別為,分別為。 在談Python中Django框架和Flask框架的區別之前,我們需要先探討如下幾個問題。 一、為什么要使用框架? showImg(https://segmentfault.com/img/remote/14600000...

    B0B0 評論0 收藏0
  • Zookeeper學習系列【】Zookeeper 集群架構、讀寫機制以及一致性原理(ZAB協議)

    摘要:協議是為分布式協調服務專門設計的一種支持崩潰恢復的一致性協議,這個機制保證了各個之間的同步。選主是協議中最為重要和復雜的過程。以實際效果而言,分區相當于對通信的時限要求。參考官方文檔阿里巴巴為什么不用做服務發現定理的含義阮一峰 前言 同學們,在上一章中,我們主要講了Zookeeper兩種啟動模式以及具體如何搭建。本章內容主要講的是集群相關的原理內容,第一章可以當做是Zookeeper原...

    Olivia 評論0 收藏0
  • Django前端頁面測試

    Django前端頁面測試 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; margin...

    IT那活兒 評論0 收藏1018

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<