model模型
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) #如果想要修改字段名,在配置文件中修改之后,重新生成表
python manage.py makemigrations
python manage.py migrate
# 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)
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)
Django API(首頁)
# 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})
<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>
<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">
# 在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>
# 修改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 %}- "{% url detail question.id %}" target="_blank">
{% endfor %}
{{ question.question_text }} {{ question.pub_date }}
{% endblock %}
制作a.html(次頁)
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})
{% 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%}
實現投票功能
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),
]
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)
{% 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%}
配置result.html
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)
{% 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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129646.html
摘要:創建投票應用采用創建的工程包括兩個層級,一個是叫工程,另外一個是工程下面的應用。一個工程可以包含多個應用。路由配置分成兩個層級,一個是在應用層配置路由,另外一個是在工程層配置路由。 一般Django的網絡程序開發步驟 配置開發的環境 初始化項目 啟動開發服務器 創建應用 創建View 配置訪問View的路由 配置項目開發環境 開發一個新的項目,第一步就是配置項目的開發環境。這里使用...
摘要:本文結合官方文檔中的個小教程,幫你了解。一共分上下兩篇文章,上篇主要來分析處理的機制,下篇來介紹下提供的后臺管理,以及單元測試等強大的功能。項目創建成功之后,可以運行生成相應的數據庫表是引入的命令,較早的版本可以用其他的命令代替。 原文地址 相信用過python的人都聽過Django的大名,知道它是一個web框架,用來支持動態網站、網絡應用程序以及網絡服務的開發。那么為什么我們需要...
摘要:上周,在舉行的上,發布,整合和。多虧存儲應用程序會話到數據庫通常來說是下載安裝或者是,我們不需要特定的負載均衡器,運行完全沒有問題。用負載均衡器描述的展示了浮動和私有集群。特別感謝來自的的支持和在測試過程中作出的貢獻。 上周,在Austin舉行的OpenStack Summit上,CoreOS發布Stackanetes,整合Kubernetes和OpenStack。 一個月前,Core...
摘要:在談中框架和框架的區別之前,我們需要先探討如下幾個問題。通過大數據統計分析全球著名的網站對和這兩個框架的調查分析。從全球著名的代碼托管平臺上的和數量上分別為,分別為。 在談Python中Django框架和Flask框架的區別之前,我們需要先探討如下幾個問題。 一、為什么要使用框架? showImg(https://segmentfault.com/img/remote/14600000...
摘要:協議是為分布式協調服務專門設計的一種支持崩潰恢復的一致性協議,這個機制保證了各個之間的同步。選主是協議中最為重要和復雜的過程。以實際效果而言,分區相當于對通信的時限要求。參考官方文檔阿里巴巴為什么不用做服務發現定理的含義阮一峰 前言 同學們,在上一章中,我們主要講了Zookeeper兩種啟動模式以及具體如何搭建。本章內容主要講的是集群相關的原理內容,第一章可以當做是Zookeeper原...
Django前端頁面測試 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; margin...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20