AlgebraMaster

Modern C++ 创造非凡 . 改变世界

导航

Web从入门到放弃<2>

<添加debug-toolbar>

django现在1.11是必须这么做:

pip install django-debug-toolbar

设置1:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls',
    'debug_toolbar',
]

设置2:

INTERNAL_IPS = ('127.0.0.1',)

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'debug_toolbar.middleware.DebugToolbarMiddleware',
]

主要的urls.py里添加:

import debug_toolbar
url(r'^__debug__/', include(debug_toolbar.urls)),

 如果还没显示出来,我通过f12看了下,一个jquery-min.js没加载,是要FQ吗!!!!!!!!!果然FQ好了。。。。CNM的天朝,CNM的天朝CNM的天朝CNM的天朝CNM的天朝CNM的天朝CNM的天朝

 

实现:

 

<body style="background-color: #222222">

<h1 style="text-align: center;background-color: #555555;
color:white;font-family: Source Code Pro;border-radius: 10px"> Questions </h1>


{% if latest_question_list %}
    <ul type="none">
    {% for question in latest_question_list %}
        <li style="color: white;;font-family: Source Code Pro">
            <a href="/polls/{{ question.id }}/">{{ question.question_text }}</a>
        </li>
    {% endfor %}
    </ul>
{% else %}
    <p>No polls are available.</p>
{% endif %}


</body>
index.html

对应的polls/views.py 里的index函数:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render
from django.http import HttpResponse,Http404
from .models import Question
from django.template import loader
from django.shortcuts import render,get_object_or_404
"""
def index(request):
    latest_question_list = Question.objects.order_by('-pub_date')[:5]
    output = ', '.join([q.question_text for q in latest_question_list])
    return HttpResponse(output)
"""

"""
def index(request):
    latest_question_list = Question.objects.order_by('-pub_date')[:5]
    print latest_question_list
    template = loader.get_template('polls/index.html')
    context = {
        'latest_question_list': latest_question_list,
    }
    return HttpResponse(template.render(context, request))
"""

def index(request):
    latest_question_list = Question.objects.all()
    context = {'latest_question_list':latest_question_list}
    return render(request,'polls/index.html',context)
View Code

 

修改index.html之: 主要用div的layout(参考http://www.w3school.com.cn/html/html_layout.asp)

<head>
    <style>
        #header {
            background-color: black;
            color: white;
            text-align: center;
            padding: 5px;
            font-family: Consolas;
        }

        #nav {
            line-height: 30px;
            background-color: #eeeeee;
            height: 300px;
            width: 100px;
            float: left;
            padding: 5px;
            font-family: Consolas;
        }

        #section {
            width:auto;
            float: left;
            padding: 10px;
            color:white;
            text-align: center;
            font-family: Consolas;
        }

        #footer {
            background-color: black;
            color: white;
            clear: both;
            text-align: center;
            padding: 5px;
            font-family: Consolas;
        }
    </style>
</head>


<body style="background-color: #222222">

<!-- Header-->
<div id="header">
    <h1> Questions </h1>
</div>


<!-- nav -->
<div id="nav">
    {% if latest_question_list %}
        {% for question in latest_question_list %}
            <a href="/polls/{{ question.id }}/"> {{ question.question_text }}</a><br>
        {% endfor %}
    {% else %}
        <p>No polls are available.</p>
    {% endif %}

</div>


<!-- section -->
<div id="section">
<p>please select a production get more details</p>
</div>


<!-- footer -->
<div id="footer">
    <p> copyright gearslogy </p>
</div>



</body>
View Code

 

 

动态的获取跳转页面:

这样做的好处是我们现在是polls/urls.py定义的是这个路径:

url(r'^([0-9]+)/$',views.detail,name='detail'),

index.html里是:

  <a href="/polls/{{ question.id }}/">{{ question.question_text }}</a>

其实这个是非常不好的方法,这个会导致你写死/polls/1

但是可以看到在urls.py里有name = 'detail',可以用下面的做法:

<a href="{% url 'detail' question.id %}"> {{question.question_text}}</a>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Questions</title>
</head>
<body>

{% for question in latest_question_list %}
    <ul>
        <a href="{% url 'detail' question.id %}"> {{question.question_text}}</a>
    </ul>

{% endfor %}


</body>
</html>
View Code

 

从下面开始将用python3开始项目。受不了文档中他妈的各种部适合

 

<1>数据库再次尝试:

查看models的api如何工作的:

from django.db import models
import datetime
from django.utils import timezone

# Create your models here.
class Question(models.Model):
    question_text = models.CharField(max_length= 200,help_text='Question text')
    pub_date = models.DateTimeField('data published')
    def __str__(self):
        return self.question_text

    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)


class Choice(models.Model):
    question = models.ForeignKey(Question,on_delete=models.CASCADE)
    choice_text = models.CharField(max_length =200)
    votes = models.IntegerField(default=0)
    def __str__(self):
        return self.choice_text

class RelativeStuff(models.Model):
    question = models.ForeignKey(Question,on_delete=models.CASCADE)
    stuff_name = models.CharField(max_length = 200)
models.py

 

Choice和RelativeStuff都关联了Question

则Question类会有个动态对象是choice_set , relativestuff_set

如果

q = Question.objects.get(id=1)  # 获取一个Question对象

q.choice_set.create(choice_text = 'Not much', votes = 10)  #直接会插入数据库中

 

如下执行3次:

数据库直接就插入数据:

 

<2>1天撸一个表格程序:

实现细节: 静态文件:

要在你的html引用static文件:

{% load staticfiles %}

然后: 

<head>
    <meta charset="utf-8">
    <title> Gearslogy</title>
    <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
    <script src="{% static 'js/jquery.min.js' %}"></script>
    <script src="{% static 'js/bootstrap.min.js' %}"></script>

</head>

 

 base.html:

{% load staticfiles %}

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title> Gearslogy</title>
    <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
    <script src="{% static 'js/jquery.min.js' %}"></script>
    <script src="{% static 'js/bootstrap.min.js' %}"></script>

</head>
<body>

<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation" >
    <div class="container-fluid" >
    <div class="navbar-header">
        <a class="navbar-brand" href="{% url 'polls:index' %}">Home</a>
    </div>
    <div>
        <ul class="nav navbar-nav" >
            <li class="active"><a href="">Tables</a></li>
            <li class="dropdown">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                    Products <b class="caret"></b>
                </a>
                <ul class="dropdown-menu">
                    {% for question in question_list %}
                        <li><a href="{% url 'polls:detail' question.id %}"> {{ question.question_text }} </a></li>
                    {% endfor %}
                </ul>
            </li>
        </ul>
    </div>
    </div>
</nav>


<br>
<br>
<br>
<div>

    {% block primary %} {% endblock %}
</div>>

</body>
</html>
View Code

主页index.html

{% extends "base.html" %}


{% block primary %}
<table class="table table-hover">
  <caption>悬停表格布局</caption>
  <thead>
    <tr>
        {% for h in header %}
            <td> {{ h }} </td>
        {% endfor %}
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Tanmay</td>
      <td>Bangalore</td>
      <td>560001</td>
    </tr>
    <tr>
      <td>Sachin</td>
      <td>Mumbai</td>
      <td>400003</td>
    </tr>
    <tr>
      <td>Uma</td>
      <td>Pune</td>
      <td>411027</td>
    </tr>
  {% for sd in data %}
      <tr>
          {% for d in sd  %}
              <td>{{ d }}</td>
          {% endfor %}
      </tr>
  {% endfor %}


  </tbody>
</table>
{% endblock %}
View Code

 

另外一个细节:如果你要漏油一个图片:

views.py

def viewImage(request):
    return HttpResponse('<img src="/static/image/test.jpg"> HelloWorld </img>')

urls.py

from django.urls import path

from . import views

app_name = 'polls'

urlpatterns = [
    path('',views.index,name='index'),
    path('<int:question_id>/',views.detail,name='detail'),
    path('<int:question_id>/results/',views.results,name='results'),
    path('<int:question_id>/vote/',views.vote,name='vote'),
    path('view/',views.viewImage,name='viewImage'),
]

 

posted on 2017-12-24 13:52  gearslogy  阅读(345)  评论(0编辑  收藏  举报