分享一下,本人练习模型的增删改查CRUD的代码,欢迎一起讨论和指正。
from datetime import datetime
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
from django.http import HttpResponse
from django.shortcuts import render
# Create your views here.
from weibo.models import WeiboUser, Weibo
def insertUsers(request):
'''循环新增数据'''
WeiboUser.objects.get_or_create(username='ANTHONY', password='123456', nickname='huidian')
for i in range(20):
# get_or_create返回的不是对象,而是元组tuple,两个元素,一是对象,二是判断是获取还是新增
user = WeiboUser.objects.get_or_create(username='ANTHONY{}'.format(i), password='123456',
nickname='huidian{}'.format(i))
Weibo.objects.get_or_create(user=user[0], content='test data', sourse='script')
return HttpResponse('insert data done')
def updateUser(request):
'''批量修改数据'''
# WeiboUser.objects.all().update(password='a123456')
user_list1 = WeiboUser.objects.filter(username__endswith='6')
user_list1.update(status='2')
WeiboUser.objects.filter(username__endswith='3').update(status='3')
WeiboUser.objects.filter(username__iendswith='ONY').update(status='4')
WeiboUser.objects.filter(username__endswith='9').update(status='2')
return HttpResponse('update data done')
def page_user(request, page_num):
'''分页练习'''
page_size = 10
paginator = Paginator(WeiboUser.objects.all().order_by('id'), page_size)
print('用户总数:', paginator.count)
print('每一页的数量:', paginator.per_page)
print('总页数:', paginator.num_pages)
# 一定注意,代码里的范围都是包前不包后的
print('页码范围:', paginator.page_range)
try:
page = paginator.page(page_num)
print('是否有下一页:', page.has_next())
print('是否有上下页:', page.has_other_pages())
print('是否有上一页:', page.has_previous())
print('数据列表:', page.object_list)
print('下一页的页码:', page.next_page_number())
print('上一页的页码:', page.previous_page_number())
except PageNotAnInteger:
# 这两个错误码得记住
print('输入的非整型,页码只能为整数。')
except EmptyPage:
print('该页码没有数据。')
return HttpResponse('test Paginator')
def filterUsers(request):
'''过滤器'''
user_list = WeiboUser.objects.all()
print('测试__contains,username中包含“ONY”的数据:', user_list.filter(username__contains='ONY'), '数量为:',
user_list.filter(username__contains='ONY').count())
print('测试__icontains,username中包含“ONY”的数据:', user_list.filter(username__icontains='ONY'), '数量为:',
user_list.filter(username__icontains='ONY').count())
print('特别注意:contains只匹配给的字符串,icontains忽略大小写')
print('--------------------------------------------------------')
print('测试__startswith,username以“张”开头的数据:', user_list.filter(username__startswith='张'), '数量为:',
user_list.filter(username__startswith='张').count())
print('测试__istartswith,username以“ant”开头的数据:', user_list.filter(username__istartswith='ant'), '数量为:',
user_list.filter(username__istartswith='ant').count())
print('测试__endswith,username以“0”结尾的数据:', user_list.filter(username__endswith='0'), '数量为:',
user_list.filter(username__endswith='0').count())
print('测试__iendswith,username以“ONY”结尾的数据:', user_list.filter(username__iendswith='ONY'), '数量为:',
user_list.filter(username__iendswith='ONY').count())
print('--------------------------------------------------------')
print('测试__in,status为3,4的数据:', user_list.filter(status__in=(3, 4)), '数量为:',
user_list.filter(status__in=(3, 4)).count())
print('测试__gt,status大于3的数据:', user_list.filter(status__gt=3), '数量为:', user_list.filter(status__gt=3).count())
print('测试__gte,status大于等于3的数据:', user_list.filter(status__gte=3), '数量为:', user_list.filter(status__gte=3).count())
print('--------------------------------------------------------')
print('-----------------------时间练习-------------------------')
print('----------------------重点重点重点--------------------------')
# now = datetime.now().date()
# print(now)
print('测试__day,创建时间为20号的数据:', user_list.filter(create_time__day=20), '数量为:',
user_list.filter(create_time__day=20).count())
print('测试__month,创建时间为3月份的数据:', user_list.filter(create_time__month=3), '数量为:',
user_list.filter(create_time__month=3).count())
print('测试__year,创建时间为2018年的数据:', user_list.filter(create_time__year=2018), '数量为:',
user_list.filter(create_time__year=2018).count())
date = datetime(2019, 7, 6)
print('自定义的时间为:', date)
print('测试时间的比较大小,在2019-7-6之后创建的数据:', user_list.filter(create_time__gt=date), '数量为:',
user_list.filter(create_time__gt=date).count())
print('-------------------------------------------------------')
print('----------------------关联练习---------------------------------')
print('>>>>>>核心思想:关联的字段可以直接使用对象进行赋值')
user = WeiboUser.objects.get(pk=218)
print('测试外键字段查询,查询用户1发表的博客内容:', Weibo.objects.filter(user=user))
return HttpResponse('test filter')
附上模型:
from django.db import models
# Create your models here.
class CommonUtils(models.Model):
create_time = models.DateTimeField('创建时间', auto_now_add=True, blank=True, null=True)
update_time = models.DateTimeField('更新时间', auto_now=True, blank=True, null=True)
class Meta:
abstract = True
class WeiboUser(CommonUtils):
username = models.CharField('用户名', max_length=32, blank=True, null=True)
password = models.CharField('密码', max_length=256, blank=True, null=True)
nickname = models.CharField('昵称', max_length=32, blank=True, default='')
status = models.SmallIntegerField('状态', blank=True, default=1,
choices=((1, '有效'), (2, '失败'), (3, '注册未完成'), (4, '未知')))
class Meta:
db_table = 'weibo_user'
def __str__(self):
return 'pk:{},username:{},password:{},nickname:{}'.format(self.id, self.username, self.password, self.nickname)
class Weibo(CommonUtils):
content = models.CharField('微博内容', max_length=512, blank=True, null=True)
user = models.ForeignKey(WeiboUser, on_delete=models.CASCADE, verbose_name='用户', blank=True, null=True)
sourse = models.CharField('发布来源', max_length=16, blank=True, null=True)
class Meta:
db_table = 'weibo'
def __str__(self):
return 'pk:{},user:{},content:{}'.format(self.id, self.user, self.content)
class Comment(CommonUtils):
content = models.CharField('评论内容', max_length=256)
user = models.ForeignKey(WeiboUser, on_delete=models.CASCADE, verbose_name='评论的用户')
weibo = models.ForeignKey(Weibo, on_delete=models.CASCADE, verbose_name='关联的微博')
class Meta:
db_table = 'weibo_comments'
def __str__(self):
return 'pk:{},user:{},weibo:{}'.format(self.id, self.user, self.weibo)
class Friend(CommonUtils):
user_from = models.ForeignKey(WeiboUser, on_delete=models.CASCADE, verbose_name='关注人', related_name='user_from')
user_to = models.ForeignKey(WeiboUser, on_delete=models.CASCADE, verbose_name='被关注人', related_name='user_to')
class Meta:
db_table = 'weibo_friends'
def __str__(self):
return 'pk:{},user_from:{},user_to:{}'.format(self.id, self.user_from, self.user_to)
class WeiboImage(CommonUtils):
weibo = models.ForeignKey(Weibo, on_delete=models.CASCADE)
image = models.ImageField(upload_to='weibo', verbose_name='图片', blank=True, default='')
class Meta:
db_table = 'weibo_image'
def __str__(self):
return 'pk:{},weibo:{},image:{}'.format(self.id, self.weibo, self.image)
print_r('点个赞吧');
var_dump('点个赞吧');
NSLog(@"点个赞吧!")
System.out.println("点个赞吧!");
console.log("点个赞吧!");
print("点个赞吧!");
printf("点个赞吧!\n");
cout << "点个赞吧!" << endl;
Console.WriteLine("点个赞吧!");
fmt.Println("点个赞吧!")
Response.Write("点个赞吧");
alert(’点个赞吧’)