当前位置:   article > 正文

python+django+sql实现简单的数据信息管理系统_利用python+django+sqlsever实现一个简单的系统,完成数据的增删改查等功能。要求

利用python+django+sqlsever实现一个简单的系统,完成数据的增删改查等功能。要求

今天分享一个博客适合刚准备学习Pythonweb开发的小伙伴。

系统涉及功能:

1:运用django+mysql实现了数据的增删改查以及搜索。

2:实现了对前端语言和前端bootstrap库的基本运用。

3:实现了自定义分页的功能以及指定页码跳转。

项目涉及技术:

Python的django框架,ORM数据*(库)架构,前端Web语言,python语言。

运行环境:

Django3.8,数据库是8.7,编译器是Pyharm专业版,网页效果展示小智双核浏览器。

代码展示:

只展示view.py文件,其他就不过多展示,因为本小项目的逻辑都在view.py类文件实现。

  1. from django.shortcuts import render,redirect
  2. from app01 import models
  3. from django import forms
  4. from django.core.validators import RegexValidator
  5. from django.core.exceptions import ValidationError
  6. from django.utils.safestring import mark_safe
  7. from app01.utils.pagination import Pagination
  8. # Create your views here.
  9. def depart_list(request):
  10. query_set=models.Department.objects.all()
  11. page_object = Pagination(request, query_set, page_size=5)
  12. context = {
  13. "query_set": page_object.page_queryset,
  14. "page_string": page_object.html()
  15. }
  16. return render(request, "depart_list.html", context)
  17. def depart_add(request):
  18. if request.method == "GET":
  19. return render(request,"depart_add.html")
  20. title=request.POST.get("title")
  21. models.Department.objects.create(title=title)
  22. return redirect("/depart/list/")
  23. def depart_delete(request):
  24. nid=request.GET.get("id")
  25. models.Department.objects.filter(id=nid).delete()
  26. return redirect("/depart/list/")
  27. def depart_modify(request,id):
  28. if request.method=="GET":
  29. row_object=models.Department.objects.filter(id=id).first()
  30. return render(request, "depart_modify.html", {"row_object":row_object})
  31. title=request.POST.get("title")
  32. models.Department.objects.filter(id=id).update(title=title)
  33. return redirect("/depart/list/")
  34. def user_list(request):
  35. queryset=models.UserInfo.objects.all()
  36. page_object=Pagination(request,queryset,page_size=2)
  37. context={
  38. "queryset":page_object.page_queryset,
  39. "page_string":page_object.html()
  40. }
  41. # for obj in queryset:
  42. # print(obj.id,obj.name,obj.account,obj.create_time.strftime("%Y-%m-%d"),obj.get_gender_display(),obj.depart.title)
  43. # depart_id=表中数据int depart==所关联表中对应的对象 depart.title
  44. # print(obj.depart.title)
  45. return render(request, "user_list.html", context)
  46. def user_add(request):
  47. if request.method=="GET":
  48. context={
  49. "gender_choice":models.UserInfo.gender_choices,
  50. "depart_list":models.Department.objects.all()
  51. }
  52. return render(request,"user_add.html",context)
  53. user=request.POST.get("user")
  54. pwd=request.POST.get("pwd")
  55. age=request.POST.get("age")
  56. account=request.POST.get("account")
  57. gender=request.POST.get("gd")
  58. ctime=request.POST.get("ctime")
  59. dapart_id=request.POST.get("dp")
  60. models.UserInfo.objects.create(name=user,password=pwd,age=age,account=account,gender=gender,create_time=ctime,depart_id=dapart_id)
  61. return redirect("/user/list/")
  62. class UserModelForm(forms.ModelForm):
  63. # name=forms.CharField(min_length=3,label="用户名")
  64. # password=forms.CharField(label="密码",validators="可填写正则表达式来确定规范")
  65. class Meta:
  66. model=models.UserInfo
  67. fields=["name","password","age","account","create_time","gender","depart"]
  68. def __init__(self,*args,**kwargs):
  69. super().__init__(*args,**kwargs)
  70. for name,field in self.fields.items():
  71. # 不添加该密码输入框样式
  72. # if name=="password":
  73. # continue
  74. field.widget.attrs={"class":"form-control","placeholder":field.label}
  75. def user_model_form_add(request):
  76. if request.method=="GET":
  77. form=UserModelForm()
  78. return render(request,"user_model_add.html",{"form":form})
  79. form =UserModelForm(data=request.POST)
  80. if form.is_valid():
  81. form.save()
  82. return redirect("/user/list/")
  83. return render(request,"user_model_add.html",{"form":form})
  84. def user_modify(request,id):
  85. if request.method=="GET":
  86. row_object=models.UserInfo.objects.filter(id=id).first()
  87. form=UserModelForm(instance=row_object)
  88. return render(request,"user_modify.html",{"form":form})
  89. row_object=models.UserInfo.objects.filter(id=id).first()
  90. form=UserModelForm(data=request.POST,instance=row_object)
  91. if form.is_valid():
  92. form.save()
  93. return redirect("/user/list/")
  94. return render(request,"user_modify.html",{"form":form})
  95. def user_delete(request,id):
  96. models.UserInfo.objects.filter(id=id).delete()
  97. return redirect("/user/list")
  98. def phone_list(request):
  99. # for i in range(100):
  100. # models.PrettyNum.objects.create(mobile="16427309716",price=10,level=1,status=1)
  101. data_dict={}
  102. value = request.GET.get('q',"")
  103. if value:
  104. data_dict["mobile__contains"]=value
  105. queryset = models.PrettyNum.objects.filter(**data_dict).order_by("-level")
  106. page_object=Pagination(request,queryset)
  107. # page_queryset=page_object.page_queryset
  108. # page_string=page_object.html()
  109. context={
  110. "value":value,
  111. "queryset":page_object.page_queryset, # 分页完的数据
  112. "page_string": page_object.html() # 页码
  113. }
  114. """
  115. # 1.根据用户想要访问的页码,计算起止位置
  116. page=int(request.GET.get('page',1))
  117. page_size=10
  118. start=(page-1)*page_size
  119. end=page*page_size
  120. total_count= models.PrettyNum.objects.filter(**data_dict).order_by("-level").count()
  121. """
  122. # 总页码
  123. # total_page,div=divmod(total_count,page_size)
  124. # if div:
  125. # total_page+=1
  126. # queryset = models.PrettyNum.objects.filter(**data_dict).order_by("-level")[page_object.start:page_object.end]
  127. # for obj in queryset:
  128. # print(obj.id, obj.mobile, obj.price,obj.get_level_display(),obj.get_status_display())
  129. # depart_id=表中数据int depart==所关联表中对应的对象 depart.title
  130. # print(obj.depart.title)
  131. return render(request,"phone_list.html",context)
  132. class PhoneModelForm(forms.ModelForm):
  133. # models=forms.CharField(disabled=True,label="手机号") 设定该字段内容不可改
  134. mobile=forms.CharField(
  135. label="手机号",
  136. validators=[RegexValidator(r'^1\d{10}$',"手机号格式错误")]
  137. )
  138. # name=forms.CharField(min_length=3,label="用户名")
  139. # password=forms.CharField(label="密码",validators="可填写正则表达式来确定规范")
  140. class Meta:
  141. model=models.PrettyNum
  142. # fields="__all__" 展示所有字段
  143. # exclude=["level"] 排除指定字段
  144. fields=["mobile","price","level","status"]
  145. def __init__(self,*args,**kwargs):
  146. super().__init__(*args,**kwargs)
  147. for name,field in self.fields.items():
  148. # 不添加该密码输入框样式
  149. # if name=="password":
  150. # continue
  151. field.widget.attrs={"class":"form-control","placeholder":field.label}
  152. def clean_mobile(self):
  153. txt_mobile=self.cleaned_data["mobile"]
  154. exists=models.PrettyNum.objects.filter(mobile=txt_mobile).exists()
  155. if exists:
  156. raise ValidationError("手机号已存在")
  157. if len(txt_mobile)!=11:
  158. raise ValidationError("格式错误")
  159. return txt_mobile
  160. class PhoneModelForm(forms.ModelForm):
  161. # models=forms.CharField(disabled=True,label="手机号") 设定该字段内容不可改
  162. mobile=forms.CharField(
  163. label="手机号",
  164. validators=[RegexValidator(r'^1\d{10}$',"手机号格式错误")]
  165. )
  166. # name=forms.CharField(min_length=3,label="用户名")
  167. # password=forms.CharField(label="密码",validators="可填写正则表达式来确定规范")
  168. class Meta:
  169. model=models.PrettyNum
  170. # fields="__all__" 展示所有字段
  171. # exclude=["level"] 排除指定字段
  172. fields=["mobile","price","level","status"]
  173. def __init__(self,*args,**kwargs):
  174. super().__init__(*args,**kwargs)
  175. for name,field in self.fields.items():
  176. # 不添加该密码输入框样式
  177. # if name=="password":
  178. # continue
  179. field.widget.attrs={"class":"form-control","placeholder":field.label}
  180. def clean_mobile(self):
  181. txt_mobile=self.cleaned_data["mobile"]
  182. exists=models.PrettyNum.objects.filter(mobile=txt_mobile).exists()
  183. if exists:
  184. raise ValidationError("手机号已存在")
  185. if len(txt_mobile)!=11:
  186. raise ValidationError("格式错误")
  187. return txt_mobile
  188. # 编辑ModelForm
  189. class PhoneEditModelForm(forms.ModelForm):
  190. # models=forms.CharField(disabled=True,label="手机号") 设定该字段内容不可改
  191. mobile=forms.CharField(
  192. label="手机号",
  193. validators=[RegexValidator(r'^1\d{10}$',"手机号格式错误")]
  194. )
  195. # name=forms.CharField(min_length=3,label="用户名")
  196. # password=forms.CharField(label="密码",validators="可填写正则表达式来确定规范")
  197. class Meta:
  198. model=models.PrettyNum
  199. # fields="__all__" 展示所有字段
  200. # exclude=["level"] 排除指定字段
  201. fields=["mobile","price","level","status"]
  202. def __init__(self,*args,**kwargs):
  203. super().__init__(*args,**kwargs)
  204. for name,field in self.fields.items():
  205. # 不添加该密码输入框样式
  206. # if name=="password":
  207. # continue
  208. field.widget.attrs={"class":"form-control","placeholder":field.label}
  209. def clean_mobile(self):
  210. txt_mobile=self.cleaned_data["mobile"]
  211. exists1=models.PrettyNum.objects.exclude(id=self.instance.pk).filter(mobile=txt_mobile).exists()
  212. if exists1:
  213. raise ValidationError("手机号编辑重复")
  214. if len(txt_mobile)!=11:
  215. raise ValidationError("格式错误")
  216. return txt_mobile
  217. def phone_add(request):
  218. if request.method=="GET":
  219. form=PhoneModelForm()
  220. return render(request,"phone_add.html",{"form":form})
  221. form = PhoneModelForm(data=request.POST)
  222. if form.is_valid():
  223. form.save()
  224. return redirect("/phone/list/")
  225. return render(request,"phone_add.html",{"form":form})
  226. def phone_modify(request,id):
  227. if request.method=="GET":
  228. row_object=models.PrettyNum.objects.filter(id=id).first()
  229. form=PhoneEditModelForm(instance=row_object)
  230. return render(request,"phone_modify.html",{"form":form})
  231. row_object=models.PrettyNum.objects.filter(id=id).first()
  232. form=PhoneEditModelForm(data=request.POST,instance=row_object)
  233. if form.is_valid():
  234. form.save()
  235. return redirect("/phone/list/")
  236. return render(request,"phone_modify.html",{"form":form})
  237. def phone_delete(request,id):
  238. models.PrettyNum.objects.filter(id=id).delete()
  239. return redirect("/phone/list/")

部分运行截图:

如果有需要源码文件的同学可以私信我! 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/877498
推荐阅读
相关标签
  

闽ICP备14008679号