为了毕业设计喵!
这次后台选取了Django(因为有完整的后台Admin和Basic Auth验证,可以帮我稍微干掉一些生产环境的坑。)话不多说,先在Windows下开发。
一:环境搭建
其实这个得注意一件事情:环境变量的配置
1.python 安装(我已经备好Py3.5)
2.pip install django (注意下版本 我1.9)
3.pycharm偷懒。直接创建一个Django项目
二:目录解释
你在创建项目之后在项目模块下面会有两个文件夹:

emmm,上面那个文件夹,掌控雷电,控制着项目的配置和对外输出 其中的初始化文件则是在运行的时候就会加载,而setting则是项目的一些配置,urls里面包含了对外输出的一些路径配置
那个templates 就是传说中模板,用于页面
底下的那个文件夹,包括了admin(就是Admin功能的模块管理) apps注册器,models在我认知里和java的Mapper一样,但更为生猛,serializers我创建的为了json输出的序列化文件, tests顾名思义测试用类 view…可以理解为Service吧 migrantinons里面便是model的管理初始化。
三:ORM
不跟你多说,起手创建mapper啊,奥不,创建模型啊:
# Create your models here.
Response Body Models in Here
from django.db import models from pygments.lexers import get_all_lexers from pygments.styles import get_all_styles #顶上这俩import用于代码高亮的,我导进来发现没什么用 xd..
class product(models.Model): id = models.AutoField(primary_key=True) no = models.CharField(max_length=20,blank=False) #no name = models.CharField(max_length=60,blank=True) comment = models.CharField(max_length=512,blank=True) code = models.CharField(max_length=256,blank=False) updateTime = models.DateTimeField(auto_now=True) creatTime = models.DateTimeField(auto_now_add=True)
对了,这里的Field类型很容易理解的,摸摸就搞定了->
好 创建好模型之后记得在Setting里填一下你的app名字,不然后面会告诉你出问题的:
INSTALLED_APPS = [ ‘django.contrib.admin’, ‘django.contrib.auth’, ‘django.contrib.contenttypes’, ‘django.contrib.sessions’, ‘django.contrib.messages’, ‘django.contrib.staticfiles’, # USE OWN PART ‘tools’, ]
完事之后配置下DB :
# Database
https://docs.djangoproject.com/en/1.11/ref/settings/#databases
Django the default Database is SQLite,So I use MySQL
DATABASES = { ‘default’: { # ‘ENGINE’: ‘django.db.backends.sqlite3’, # ‘NAME’: os.path.join(BASE_DIR, ‘db.sqlite3’),
# local DB perproties:
'ENGINE': 'django.db.backends.mysql',
'NAME':'qrcode',
'USER': 'root',
'PASSWORD': '699307',
'HOST': '127.0.0.1',
'PORT': '3306',
}}
因为py3 用MySQL会import出错,记得在项目初始化的时候填一句:
import pymysql
to site py2-3
pymysql.install_as_MySQLdb()
搞定这些之后可以打开pycharm的terminal: python mange.py
python manage.py makemigrations python manage.py migrate
然后就会生成本项目相关的表,也会创建好你model里面class对应的DB
其实此刻你已经可以去view写你的操作了,但是因为毕设的需求,我需要管理员去做这个事情:遂改造Admin:
#Regist in @admin.register(product) class ProductAdmin(admin.ModelAdmin): list_display = (‘id’,‘no’,‘name’,‘comment’,‘code’,‘updateTime’) list_per_page = 20 list_editable = [‘name’] list_display_links = (‘id’, ‘no’) ordering = (‘-id’,) search_fields =(‘name’,‘id’)
#Set User Pro
def get\_readonly\_fields(self, request, obj=None):
""" READ ONLY """
if request.user.is\_superuser:
self.readonly\_fields = \[\]
return self.readonly\_fields
readonly\_fields = ('id', 'no', 'code', 'updateTime', 'creatTime')
#when inner new product
def save\_model(self, request, obj, form, change):
if change:
pass
else:
nos = views.GET\_GOOD\_NO()
codes = views.GET\_MD5\_CODE(nos)
obj.no = nos
obj.code = codes
super(ProductAdmin, self).save\_model(request, obj, form, change)我这样写的目的是让普通只有读写权限的人可操作的字段减少,于此同时在增删改查的时候必须通过登陆来做事,而且我里面有两列是自动生成的,所以就写成这样了。
完成这些之后 创建一个超级用户,登陆进去,再添加一个普通用户,赋予他对product的操作权限,但取消他作为组管理的权限,到此该部分结束,根据毕设要求我得有一个展示页面:
页面核心:
{% load pagination\_tags %} {% autopaginate products 10 %} {% for product in products %} {{product.id}} {{product.name}} {{product.comment}} {{product.creatTime}} Open QR-Code在这里我做了一下分页,通过安装插件完成,前端继续使用我们最好的 朋友UIKIT3
最后配置URL:
url(r’^admin/’, admin.site.urls), #QR_CODE —index url(r’^product/qrcode/(.+)$’, views.generate_qrcode, name=‘qrcode’), url(r’^product/index.html’, views.index, name=‘index’),
到此基础数据的增删改查已经OK