Python新手使用的Django架站的16堂课 --- 第八章(二)

Python新手使用的Django架站的16堂课 — 第八章(二)

要求

在这里插入图片描述
在这里插入图片描述
django-admin startproject ch0813www

过程

建立工程
django-admin startproject ch08tst
cd ch08tst/
python manage.py startapp mysite
cd ch08tst/
vi settings.py

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

修改:mysite / models.py

from django.db import models

# Create your models here.

class Mood(models.Model):
    status = models.CharField(max_length=10, null = False)
    
    def __unicode__(self):
        return self.status
        
class Post(models.Model):
    mood = models.ForeignKey('Mood', on_delete=models.CASCADE)
    nickname = models.CharField(max_length=10, default='不愿意透漏身份的人')
    message = models.TextField(null=False)
    del_pass = models.CharField(max_length=10)
    pub_time=models.DateTimeField(auto_now=True)
    enabled=models.BooleanField(default=False)
    
    def __unicode__(self):
        return self.message
        


在这里插入图片描述

修改: mysite / admin.py
from django.contrib import admin

# Register your models here.
from mysite import models

class  PostAdmin(admin.ModelAdmin):
    list_display=('nickname', 'message', 'enabled', 'pub_time')
    ordering = ('-pub_time',)

admin.site.register(models.Mood)
admin.site.register(models.Post, PostAdmin)


初始化

python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver 192.168.99.218:8080
http://192.168.99.218:8080/admin

添加心情

生气 开心 感恩 快乐 后悔 哀伤 兴奋 挑战 犹豫
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

从 第7章的源码中 复制 templates 目录和 static 目录
修改 mysite / views.py
#encoding:utf-8
from django.shortcuts import render

# Create your views here.

from django.template.loader import get_template
from django.http import HttpResponse
from mysite import models 

def index(request):
    template = get_template('index.html')
    posts = models.Post.objects.filter(enabled=True).order_by('-pub_time')[:30]
    moods = models.Mood.objects.all()
    html = template.render(locals())
    
    return HttpResponse(html)

修改 templates / index.html
<!-- index.html (ch08www project) -->
{% extends "base.html" %}
{% block title %}我有话要说{% endblock %}
{% block content %}
<div class='container'>

<form name='my form' action='/' method='GET'>
    现在的心情:<br/>
    {% for m in moods %}
    <input type='radio' name='mood' value='{{ m.status }}'>{{ m.status }}
    {% endfor %}
    <br/>
    心情留言板:<br/>
    <textarea name='user_post' rows=3 cols=70></textarea><br/>
    <label for='user_id'>你的昵称:</label>
    <input id='user_id' type='text' name='user_id'>
    <label for='user_pass'>张贴/删除密码:</label>
    <input id='user_pass' type='password' name='user_pass'><br/>
    <input type='submit' value='张贴'>
    <input type='reset' value='清除重填'>
</form>

<div class='row'>
    <div class='col-md-12'>
        <div class='panel panel-default'>
            <div class='panel-heading' align=center>
            <h3>~~宝宝心里苦,宝宝只在这里说~~</h3>
    </div>
</div>

{% for p in posts %}
    {% cycle "<div class='row'> <div class='col-md-4'>" "<div class='col-md-4'>" "<div class='col-md-4'>" %}
        <div class='panel panel-primary'>
            <div class='panel-heading'>【{{ p.nickname }}】觉得{{ p.mood }}</div>
            <div class='panel-body'>{{ p.message | linebreaks }}</div>
            <div class='panel-footer' align='right'>
                <i><small>{{ p.pub_time }}</small></i>
                <span class="glyphicon glyphicon-trash" onclick='go_delete({{p.id}})'></span>
            </div>
        </div>
    </div>
    {% cycle "" "" "</div>"%}
{% endfor %}


</div>
{% endblock %}



修改 ch08tst / urls.py
from django.conf.urls import include, url
from django.contrib import admin
from mysite import views
urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', views.index),
]
浏览器查看

http://192.168.99.218:8080/
在这里插入图片描述

修改 mysite / views.py
#encoding:utf-8
from django.shortcuts import render

# Create your views here.

from django.template.loader import get_template
from django.http import HttpResponse
from mysite import models 

def index(request):

    template = get_template('index.html')
    posts = models.Post.objects.filter(enabled=True).order_by('-pub_time')[:30]
    moods = models.Mood.objects.all()
        
    try:
        user_id = request.GET['user_id']
        user_pass = request.GET['user_pass']
        user_post = request.GET['user_post']
        user_mood = request.GET['mood']
        
    except:
        user_id = None
        message = '如果要张贴信息,那么每一个字段都要填...'
        
    
    if user_id != None :
        mood = models.Mood.objects.get(status=user_mood)
        post = models.Post.objects.create(mood=mood, 
                                            nickname=user_id,
                                            del_pass=user_pass,
                                            message=user_post)
                                            
        post.save()
        message= '成功存储!请记得您的编辑密码[{}]!,信息须审查后才会显示.'.format(user_pass)
                
    html = template.render(locals())
    
    return HttpResponse(html)


header.html
<!-- header.html (ch07www project) -->
    <nav class='navbar navbar-default'>
        <div class='container-fluid'>
            <div class='navbar-header'>
                <div class='navbar-brand' align=center>
                    不吐不快
                </div>
            </div>
            <ul class='nav navbar-nav'>
                <li class='active'><a href='/'>Home</a></li>
                <li><a href='/admin'>后台管理</a></li>  
            </ul>
        </div>
    </nav>
index.html
<!-- index.html (ch08www project) -->
{% extends "base.html" %}
{% block title %}我有话要说{% endblock %}
{% block content %}
<div class='container'>
{% if message %}
    <div class='alert alert-warning'>{{ message }}</div>
{% endif %}

<form name='my form' action='/' method='GET'>
    现在的心情:<br/>
    {% for m in moods %}
    <input type='radio' name='mood' value='{{ m.status }}'>{{ m.status }}
    {% endfor %}
    <br/>
    心情留言板:<br/>
    <textarea name='user_post' rows=3 cols=70></textarea><br/>
    <label for='user_id'>你的昵称:</label>
    <input id='user_id' type='text' name='user_id'>
    <label for='user_pass'>张贴/删除密码:</label>
    <input id='user_pass' type='password' name='user_pass'><br/>
    <input type='submit' value='张贴'>
    <input type='reset' value='清除重填'>
</form>

<div class='row'>
    <div class='col-md-12'>
        <div class='panel panel-default'>
            <div class='panel-heading' align=center>
            <h3>~~宝宝心里苦,宝宝只在这里说~~</h3>
    </div>
</div>

{% for p in posts %}
    {% cycle "<div class='row'> <div class='col-md-4'>" "<div class='col-md-4'>" "<div class='col-md-4'>" %}
        <div class='panel panel-primary'>
            <div class='panel-heading'>【{{ p.nickname }}】觉得{{ p.mood }}</div>
            <div class='panel-body'>{{ p.message | linebreaks }}</div>
            <div class='panel-footer' align='right'>
                <i><small>{{ p.pub_time }}</small></i>
                <span class="glyphicon glyphicon-trash" onclick='go_delete({{p.id}})'></span>
            </div>
        </div>
    </div>
    {% cycle "" "" "</div>"%}
{% endfor %}


</div>
{% endblock %}



在这里插入图片描述

page229

加上删除帖文的功能

这个功能不知道为啥不行
在IE中看不到 垃圾桶 符号,在chrome中可以看到,但是不能点击.
应该是浏览器设置的问题.

<script>
function go_delete(id){
    var user_pass = document.getElementById('user_pass').value;
    if (user_pass != "") {
        var usr = '/' + id + '/' + user_pass;
        window.location = usr;
    }
}
</script>

<span class="glyphicon glyphicon-trash" onclick='go_delete({{p.id}})'></span>

page 231

django 练习 源码工程

https://download.csdn.net/download/wowocpp/11754869

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值