blog_mysql框架

整体框架

client 

发送请求

django server

接收请求,查找响应方法

 urls.py

调用方法

views.py

访问数据库 -->models

获取页面资源-->templates

models.py

获取数据库数据

templates

生成 html 返回 html到client

client

数据表间表间关系

为了保证数据完整性,关系数据库通过主外建实现了表之间的关系

主键

表中一个或多个字段,它的值用于唯一地标表中的某一条记录

两个表关系中,主键用来在一个表中引用来自于另一个表中的特定记录

主键是一种唯一关键字,表定义的一部分

一个表不能有多个主键,并且主键的列不能包含空值

外键

如果公共字段在一个关系中是主键,那么这个公公字段被称为另一个关系的外键

由此可见,外键表示了两个关系之间的相关联系

主表与子表

凭借另一个关系的外键作主关键字的表被称为主表

具有此外的表被称为主表的从表


实现关系型数据库的关系

关系数据库中,表之间的关系

一对一

django.db.models.OneToOneField

e.g 每个人只有一张身份证

一对多/多对一

django.db.models.ForeignKey

 e.g 汽车只能有一个制造商,但是一个制造商可以有多辆汽车

多对多

django.db.models.ManyToManyField

e.g 学生可以选择多门课程,每门课程下有多个学生

框架搭建

创建模型

models.py

from django.db import models

class Tag(models.Model):

tag_name = models.CharField(max_length=20)

create_time = models.DateTimeField(auto_now_add=True)

def __unicode__(self):

return self.tag_name

class Classification(models.Model):

name = models.CharField(max_length=20)

def __unicode__(self):

return self.name

class Author(models.Model):

name = models.CharField(max_length=30)

email = models.EmailField(blank=True)

website = models.URLField(blank=True)

def __unicode__(self):

return u'%s' % (self.name)

class Article(models.Model):

caption = models.CharField(max_length=30)

subcaption = models.CharField(max_length=50,blank=True)

publish_time = models.DateTimeField(auto_now_add=True)

update_time = models.DateTimeField(auto_now=True)

author =models.ForeignKey(Author)

classification = models.ForeignKey(Classification)

tags = models.ManyToManyField(Tag,blank=True)

content = models.TextField()


创建视图方法

from myblog.models import Article,Tag,Classification
from django.shortcuts import render_to_response
from django.template import RequestContext

#render_to_response主要用于渲染页面返回页面数据
#order_by排序 “-”减号是倒叙

def blog_list(request):
   blogs = Article.objects.all().order_by('-publish_time')
   return render_to_response('index.html', { "blogs":blogs}, context_instance=RequestContext(request))

def blog_detail(request):
   if request.method == 'GET':
      id = request.GET.get('id','');
      try:
         blog = Article.objects.get(id=id)
      except Article.DoesNotExist:
         raise Http404
      return render_to_response("detail.html",{"blog":blog},context_instance=RequestContext(request))
   else:
      raise Http404

创建博客首页面模版

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>AuroraBlog</title>
      <link href="/static/css/dblog.css" rel="stylesheet" type="text/css" />
</head>
<body>
      <div class="container">
      <div class="header">
      <div id="top">
      <a href="/blog"><img src="/static/image/LOGO.png" alt="LOGO" name="logo" width="400" height="300" id="logo" /></a>
      <div id="nav_div">
      <ul id="top_nav">
         <li><a href="/" class="a_normal">首页</a></li>
         <li><a href="#" class="a_normal">订阅</a></li>
         <li><a href="#" class="a_normal">关于</a></li>
         </ul>
         </div>
         </div>
      <!-- end .header --></div>
      <div class="content_body">
      <div class="main_body">
      {% for blog in blogs %}
      <div class="blog_body">
      <div class="blog_title"><a href="/detail/?id={{ blog.id }} ">{{ blog.caption }}</a></div>
         <div class="blog_info1">
      <span class="blog_info1_list">
         <span class="li_small_1">分类,<a href="#">{{ blog.classification }}</a></span>
         <span class="li_small_1">发表时间 : {{ blog.publish_time|date:"Y-m-d H:i" }}</span>
         </span>
      </div>
         <div class="blog_splitline"></div>
         <div class="blog_description">{{ blog.content }}</div>
         <div class="blog_info2">
            <span class="blog_info2_list">
      <span class="li_small_2">标签:{% for tag in blog.tags.all %}<a href="#">{{ tag.tag_name}}</a>{% endfor %}
         </span>
         </div>
         </div>
         {% endfor %}
         </div>
         </div>
         </div class="footer">
         </div id="footer_logo"></div>
         <div id="siteinfo">&copy; 2007 - 2012 AuroraWork Project</div>
         <!-- end .footer --><div>
         <!-- end .container --></div>
</body>
</html>

添加静态文件

 static

css

image

设置settings

STATIC_URL = '/static/'

STATICFILES_DIRS = [

BASE_DIR +'/static/',

 ]


设置首页路径

templates = 

DIRS : [r'']

#index.html存放路径




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值