zoukankan      html  css  js  c++  java
  • Day 56 Django_BBS(博客项目)_项目总结

    项目总结

    1、一次请求伴随多次请求

    2、PIL 模块

    3、session 存储

    4、验证码刷新

    5、ajax 请求

    ajax上传文件的坑,要使用 FormData 进行上传

    $('#up_file').change(function () {
            file_obj = $('#up_file')[0].files[0];
            var formdata = new FormData;
            formdata.append("file",file_obj);
            formdata.append("csrfmiddlewaretoken",$('[name="csrfmiddlewaretoken"]').val());
            $.ajax({
                url: '',
                type: "post",
                contentType: false,
                processData: false,
                data: formdata,
                success: function (data) {
                    console.log(data)
                    // 展示错误信息
                }
    
            });
            console.log(123)
        })

    6.头像预览

      1、获取用户选中的文件对象

      2、获取文件对象的路径

      3、修改 img 的 src 属性,src = 文件对象的路径

    7.存储文件时 django 做的事情

    avatar = models.FileField(upload_to='static/app/avatars/', default="/avatars/default.png")
    user_obj = UserInfo.objects.create_user(username=user,password=pawd,telephone=telephone,email=email,avatar=tt_img)

    django做的事情:

    会将文件对象下载到项目的根目录中的 avatars 文件夹中,如果没有 avatar 文件夹,Django 会自动创建,user_obj 的 avatar 存的是文件的相对路径

    8.Media配置——MEDIA_ROOT 

    Django 有两种静态文件:

      /static/    js、css、img

      /media/    用户上传文件

    配置 MEDIA_ROOT 

    django做的事情:

    会将文件对象下载到MEDIA_ROOT中的 avatars 文件夹中,如果没有 avatar 文件夹,Django 会自动创建,user_obj 的 avatar 存的是文件的相对路径

     9.Media配置——MEDIA_url 

    settings.py:

    MEDIA_URL = "/media"

    urls.py:

    from django.views.static import serve
    from BBS import settings
    
    urlpatterns = [
        re_path(r'media/(?P<path>.*)$',serve,{"document_root":settings.MEDIA_ROOT})
    ]

    10.admin 界面,注册表

    admin.py

    from django.contrib import admin
    
    # Register your models here.
    
    from app import models
    
    admin.site.register(models.UserInfo)
    admin.site.register(models.Blog)
    admin.site.register(models.Category)
    admin.site.register(models.Tag)
    admin.site.register(models.Article)
    admin.site.register(models.Article2Tag)
    admin.site.register(models.ArticleUpDown)
    admin.site.register(models.Comment)

     11.自定义标签渲染

    from django import template
    
    register = template.Library()
    
    @register.simple_tag
    def multi(x, y):
        return x * y
    
    @register.inclusion_tag("left_tag.html")
    def get_home_left_tag(username):
        pass

     12.事务处理

    from django.db import transaction
    with transaction.atomic():
        pass

    13.发送邮件

    settings.py 配置

    # 邮箱配置
    EMAIL_HOST = 'smtp.163.com'  # qq 邮箱
    EMAIL_POST = 25             # qq 邮箱端口:465
    EMAIL_HOST_USER = 'yishuanggong@163.com'
    EMAIL_HOST_PASSWORD = 'QMXQCYISYAOIDAXY'    # 授权码
    DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
    EMAIL_USE_SSL = False

    views.py

    from django.core.mail import send_mail
    from BBS import settings
    import threading
    
    send_mail(
        '您的文章%s新增一条评论,请查收' % article.title,
        content,
        settings.EMAIL_HOST_USER,
        ["%s" % article.user.email]  # 邮箱地址
    )
    
    # 线程发送
    t = threading.Thread(target=send_mail,
        args=(
            '您的文章%s新增一条评论,请查收' % article.title,
            content,
            settings.EMAIL_HOST_USER,
            ["%s" % article.user.email]
        )
    )
    t.start()

     14.kindeditor 编辑器

    下载:http://kindeditor.net/down.php
    文档:http://kindeditor.net/doc.php

    踩的坑:

    1、在 textarea 标签添加 kindeditor 样式后,不能通过 jquery 拿到 textarea 内的 val,需要通过 editor.html() 获取(使用前需要仔细看文档)。

    2、Django 默认把 X-Frame-Options 设置为了 deny,在上传文件时报错(in a frame because it set 'X-Frame-Options' to 'deny')
    关于的介绍详情可查看:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/X-Frame-Options

    解决:在需要更改 X-Frame-Options 的地方单独引用即可

    from django.views.decorators.clickjacking import xframe_options_exempt
    from django.views.decorators.clickjacking import xframe_options_deny
    from django.views.decorators.clickjacking import xframe_options_sameorigin
    
    
    @xframe_options_sameorigin
    def upload(request):
        pass

    15.使用 bs4 模块实现文章描述信息的文字截取

    from bs4 import BeautifulSoup
    
    def xxx():
        content = request.POST.get('content')
        soup = BeautifulSoup(content,'html.parser')
        desc = soup.text[:150]
  • 相关阅读:
    文件上传upload-lab
    windows缓冲区溢出
    c++头文件创建与使用
    bash脚本中一些变量的含义
    bash脚本一些语句的语法
    一些暴力破解的工具和字典生成文件
    Netcat基本操作命令
    Trevorc2
    msfconsol中的部分模块
    msfvenom木马生成
  • 原文地址:https://www.cnblogs.com/ysging/p/12815418.html
Copyright © 2011-2022 走看看