django项目实战vCard博客


准备

项目创建

  1. 创建虚拟环境
    python -m venv venv_vcard
  2. 启动虚拟环境
    cd venv_vcard\scripts\activate
  3. 安装django模块(1.11.4)
    `pip install django’

安装固定版本’pip install django==1.11.4’

  1. 项目创建
    django-admin startproject vcard

  2. 配置settings.py

  • LANGUAGE_CODE = 'zh-hans'
  • TIME_ZONE = 'Asia/Shanghai'
  1. 启动服务器
    python manage.py runserver

app 程序准备

  1. 创建app
    python manage.py startapp guestbook
  2. setting.py里注册app
    INSTALLED_APPS = [...,'guestbook','blog',]
  3. 进行数据库迁移
  • python manage.py migrate
  1. 创建超级用户
    python manage.py createsuperuser

添加 apps 目录
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))

留言簿

留言簿后台管理

  • 定义留言消息模型Massage
import reprlib
from django.db import models

class Message(models.Model):
    """留言消息类"""
    name = models.CharField('用户名', max_length=20)
    email = models.EmailField('邮箱',max_length=200)
    message = models.TextField('留言')
    active = models.BooleanField('有效', default=True)
    posted = models.DateTimeField('发布时间', auto_now_add=True)

    def __str__(self):
        return f'{self.name} {reprlib.repr(self.message)}'

使用标准库reprlib中的repr()方法进行格式化显示:长内容留住头和尾,中间用省略号表示

  • 后台管理配置
from django.contrib import admin
from .models import Message

class MessageAdmin(admin.ModelAdmin):
    """留言消息管理"""
    list_display = ('name', 'email', 'active', 'posted') #显示
    list_filter = ('active', 'posted') #过滤条件
    search_fields = ('name', 'message')  #搜索
    ordering = ('-posted',)  #排序

#注册留言管理
admin.site.register(Message, MessageAdmin)
  • 数据迁移
    1. 创建迁移
      python manage.py makemigrations guestbook
    2. 执行迁移
      python manage.py migrate guestbook 0001

留言簿前台提交

  • views.py视图中编写视图
from django.shortcuts import render, redirect, reverse
from django.http import HttpResponse
from .models import Message

def post_message(request):
    """首页留言提交处理"""
    if request.method == 'POST':
        name = request.POST.get('name','')
        email = request.POST.get('email','')
        content = request.POST.get('message','')
        if name and content:
            msg = Message(name=name, email=email, message=content)
            msg.save()
            return redirect(reverse('home'))
        else:
            return HttpResponse('用户名及留言必须填写!')
    return redirect(reverse('home'))
  • 在主模块下添加url
...
from guestbook import views as gb_views
urlpatterns = [
    url(r'^post-message/$', view=gb_views.post_message, name='post_message'),
    ...
]

  • 在前台form表单中的添加提交地址与请求方式,并添加防止跨站点伪造
    注意首页提交留言的字段id与name要保持与视图中获取的一致
<form action="/post-message/" method="post" id="contact_form">
    {% csrf_token %}
    ....
</form>

前台HTML与视图整合

templates 模板呈现

  1. 在项目下创建templates文件夹,将前台模板复制在此路径下
  2. setting.py下进行配置
    TEMPLATES = [ {'DIRS': [os.path.join(BASE_DIR, 'templates'),],..}]
  • 在项目下的’views.py’创建视图
from django.shortcuts import render, redirect, reverse

def home(request):
    """vCard首页"""
    return render(request, 'index.html')
  • urls.py里添加url规则
    1. 导入视图from . import views
    2. 添加url规则 urlpatterns = [ url(r'^$', view=views.home, name='home'),..]

static 静态资源文件管理

默认从app目录下查找static作为静态资源文件目录

  1. 在项目下创建static文件夹,将 静态资源复制在此路径下
  2. setting.py里手动配置静态资源目录,指定使用项目下的static
    STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),]
  3. 模板页呈现静态资源
  • 方法一:在所有静态资源链接前添加/static/ 引用资源位置
  • 方法二:使用static指令
    1. 在网页前端添加{% load static %} # 载入静态资源
    2. 将静态资源链接改为 <link href="{% static 'style.css' %}"/> 由static指令自动转换呈现资源相对位置

模板继承

  1. 创建模板页’base.html’,在标题、正文部分使用block占位
    {% block content %} {% endblock content %}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值