django实战模拟博客系统

本文介绍了一个使用Django框架实现的博客系统的搭建过程,包括模型定义、视图函数、URL配置及前端展示等方面的内容。

数据库代码块

 1 from django.db import models
 2 from django.utils import timezone
 3 from django.contrib.auth.models import User
 4 
 5 # Create your models here.
 6 class BlogArticles(models.Model):
 7     title = models.CharField(max_length=30)
 8     author = models.ForeignKey(User,related_name="blog_posts")
 9     body = models.TextField()
10     publish = models.DateTimeField(default=timezone.now)
11 
12     class Meta:
13         ordering = ("-publish",)
14 
15     def __str__(self):
16         return self.title

显示文章标题代码块

1 from django.shortcuts import render
2 from .models import BlogArticles
3 
4 def blog_title(request):
5     blogs = BlogArticles.objects.all()
6     return render(request,'blog/titles.html',{"blogs":blogs})

公共模板base.html

 1 {% load staticfiles %}
 2 <!DOCTYPE html>
 3 <html lang="en">
 4 <head>
 5     <meta charset="UTF-8">
 6     <title>{% block title %}{% endblock %}</title>
 7     <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
 8 </head>
 9 <body>
10 <div class="container">
11     {% block content %}
12     {% endblock %}
13 </div>
14 <script src="/static/jquery.min.js"></script>
15 <script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
16 </body>
17 </html>

显示文章标题

unblog的url中

    url(r'^blog/', include('blog.urls')),

blog的url中

    url(r'^blog_title/', views.blog_title),

视图函数

1 from .models import BlogArticles
2 
3 def blog_title(request):
4     blogs = BlogArticles.objects.all()
5     return render(request,'blog/titles.html',{"blogs":blogs})
titles。html
 1 {% extends "base.html" %}
 2 
 3 {% block title %}blog titles{% endblock %}
 4 
 5 {% block content %}
 6     <div class="row text-center vertical-middle-sm" ><h1>我的博客</h1></div>
 7     <div class="row">
 8     <div>
 9         <ul>
10             {% for blog in blogs %}
11                 <li><a href="#">{{ blog.title }}</a></li>
12             {% endfor %}
13         </ul>
14     </div>
15     </div>
16 {% endblock %}

显示结果

 

 

 

查看文章内容

映射关系

    url(r'^blog_title/$', views.blog_title),
    url(r'^blog_title/(?P<nid>\d)/$', views.blog_article),

前端中的title,html更改项目

            {% for blog in blogs %}
                <li><a href="{{ blog.id }}">{{ blog.id }}>>>{{ blog.title }}</a></li>
            {% endfor %}

 函数部分

1 def blog_article(request,nid):
2     # article=BlogArticles.objects.get(id=nid)
3     article= get_object_or_404(BlogArticles,id=nid)
4     pub = article.publish
5     return render(request,'blog/content.html', {"article":article,"pub":pub})

 

 content.html前端代码

{% extends "base.html" %}
{% block title %}blog articel{% endblock %}
{% block content %}
    <div class="row text-center vertical-middle-sm"><h1>{{ article.title }}</h1></div>
    <div class="row">
        <div>
            <P class="text-center">
                <span>{{ article.author.username }}</span>
                <span>{{ pub }}</span>
            </P>
        </div>
        <div>{{ article.body }}</div>
    </div>
{% endblock %}

  最后结果

url代码

    url(r'^register/$', views.user_register,  name='user_register'),

 

 

注册的视图函数

def user_register(request):
    if request.method == 'GET':
        user_form = RegistrationForm()
        return render(request, 'account/register.html', {"form": user_form})
    if request.method == 'POST':
        user_form = RegistrationForm(request.POST)
        print(">>>",request.POST)
        if user_form.is_valid():
            new_user = user_form.save(commit=False)
            print('1',new_user)
            new_user.set_password(user_form.cleaned_data['password'])
            print('2',new_user)
            new_user.save()
            return HttpResponse('注册成功')
        else:
            return HttpResponse('注册失败')
    else:
        user_form = RegistrationForm()
        return render(request, 'account/register.html', {"form": user_form})

 

html验证的代码

注册时的代码html的代码

 1 {% extends "base.html" %}
 2 {% load staticfiles %}
 3 {% block title %}用户注册{% endblock %}
 4 
 5 {% block content %}
 6     <div class="row text-center vertical-middles-sm">
 7         <h1>登陆注册页面</h1>
 8         <p>如果账户已存在请<strong><a href="{% url 'account:user_login' %}">登陆</a></strong></p>
 9         <p>或者,请注册</p>
10         <form class="form-horizontal" action="." method="post">{% csrf_token %}
11             <div class="form-group">
12                 <label for="{{ from.username.id_for_lable }}" class="col-md-5 control-label">Username</label>
13                 <div class="col-md-6 text-left">{{ form.username }}</div>
14             </div>
15             <div class="form-group">
16                 <label for="{{ from.email.id_for_lable }}" class="col-md-5 control-label">Email</label>
17                 <div class="col-md-6 text-left">{{ form.email }}</div>
18             </div>
19             <div class="form-group">
20                 <label for="{{ from.password.id_for_lable }}" class="col-md-5 control-label">Password</label>
21                 <div class="col-md-6 text-left">{{ form.password }}</div>
22             </div>
23             <div class="form-group">
24                 <label for="{{ from.password.id_for_lable }}" class="col-md-5 control-label">Confirm Password</label>
25                 <div class="col-md-6 text-left">{{ form.password2 }}</div>
26             </div>
27             <input type="submit" class="btn btn-lg btn-primary" value="注册">
28         </form>
29     </div>
30 {% endblock %}

 

 

未完待续

 

转载于:https://www.cnblogs.com/cerofang/p/8452982.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值