分享一下,本人練習模型的增刪改查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(’點個贊吧’)