python笔记(博客项目,文件上传注意事项,templatetags,csrftoken验证js文件,数据库导入导出)

1、头像上传
settings.py

# Django用户上传的都叫media文件
MEDIA_URL = '/media/'

# media配置,用户上传的文件都默认在这个文件下
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
models.py

在这里插入图片描述
views.py
在这里插入图片描述
js代码:

 {#找到头像的input标签绑定change事件#}
    $('#id_avatar').on("change", function () {
        var filereader = new FileReader();
        {#取到当前选中的文件#}
        filereader.readAsDataURL(this.files[0]); //读取文件需要时间
        {#等上一步读完文件之后把照片加#}
        filereader.onload = function () {
            {#把图片加载到img标签中#}
            $('#img-ava').attr('src', filereader.result);
        };
    });
    $('#re-submit').on('click', function () {
        //获取用户填写的数据
        var formdata = new FormData();
        formdata.append('username', $('#id_username').val());
        formdata.append('password', $('#id_password').val());
        formdata.append('repassword', $('#id_repassword').val());
        formdata.append('email', $('#id_email').val());
        formdata.append('csrfmiddlewaretoken', $("[name = 'csrfmiddlewaretoken']").val());
        formdata.append('img-ava', $('#id_avatar')[0].files[0]);

        $.ajax({
            url: '/register/',
            type: 'post',
            processData: false, //告诉jQuery不要处理我的数据
            contentType: false,//告诉jQuery不要设置content类型
            data: formdata,
            success: function (data) {
                if (data.status) {
                    console.log(data);
                    // 显示错误
                    $.each(data.msg, function (k, v) {
                        $("#id_" + k).next('span').text(v[0]).parent().parent().addClass('has-error');
                    })
                } else {
                    // 没错误
                    location.href = data.msg;
                }
            }
        })
    });

2、templatetags的使用**

  1. 创建一个名字叫templatetags的包

在这里插入图片描述

  1. 获取传输数据(my_tags.py)

     from django import template
    from bbs import models
    from django.db.models import Count
    
    register = template.Library()
    
    # 左侧数据显示
    @register.inclusion_tag('left_menu.html')
    def get_left_menu(username):
        user = models.UserInfo.objects.filter(username=username).first()
        # 如果用户存在拿出用户所有文章
        blog = user.blog
        # 将我的文章按照我的分类分组,并统计出每个分类下的文章数
        category_list = models.Category.objects.filter(blog=blog).annotate(c=Count('article')).values('title', 'c')
        # 将我的文章按照我的白哦前分组,并统计出每个标签下的文章数
        tag_list = models.Tag.objects.filter(blog=blog).annotate(c=Count('article')).values('title', 'c')
        # 按日期归档
        archive_list = models.Article.objects.filter(user=user).extra(
            select={'ym': 'date_format(create_time,"%%Y-%%m")'}
        ).values('ym').annotate(c=Count('nid')).values('ym', 'c')
        return {'category_list':category_list,
                'tag_list':tag_list,
               'archive_list':archive_list
                }
    

返回值会送到left_menu.html文件中

3、其他HTML文件使用

{% load my_tags %}

在这里插入图片描述

4、csrftoken验证js文件

function getCookie(name) {
    var cookieValue = null;
    if (document.cookie && document.cookie !=='')
    {
        var cookies = document.cookie.split(';');
        for (var i = 0;i < cookies.length;i++)
        {
            var cookie = jQuery.trim(cookies[i]);
            if (cookie.substring(0,name.length + 1) === (name + '='))
            {
                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));

            }
        }

    }
    return cookieValue;
}

var csrftoken = getCookie('csrftoken');

function csrfSafeMethod(method) {
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));

}
$.ajaxSetup({
    beforeSend:function (xhr,settings) {
        if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
            xhr.setRequestHeader('X-CSRFToken',csrftoken);
        }
    }
});

5、数据库导入导出

导入数据库:
 use chengjian;
 source C:\Users\15592530531\Desktop\mysqlfilechengjian.sql;
 
导入数据到数据库:
mysql -u root -D 数据库名

导入数据到数据库中某个表:
mysql -u root -D 数据库名 表名

导出数据库:
mysqldump -u root -p 数据库名称 > 导到的路径.sql

导出数据库的某个表:
mysqldump -u root -p 数据库名称 表名 > 导到的路径.sql

导出数据库结构:
mysqldump -u root -p -d --add-drop-table 数据库名称 > 导到的路径.sql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值