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的使用**
- 创建一个名字叫
templatetags
的包
-
获取传输数据(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