pycharm新建django应用
1.首先安装django
pip install Django==2.2.6
2.创建django项目
3、创建应用
python manage.py startapp help
4、注册应用
数据库配置
1、配置数据库
配置Django02/setting.py下的DATABASE如下:
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'NAME':'help', # 数据库名,使用的数据库必须先手动创建
'USER':'root', # 连接mysql的用户名
'PASSWORD':'root', #密码
'HOST':'localhost', #指定mysql数据库所在的电脑ip
'PORT':3306, # 数据库端口号
}
}
2.安装mysql
pip install pymysql
3.init.py添加代码
import pymysql
pymysql.install_as_MySQLdb()
4.兼容性问题
将venv\lib\site-packages\django\db\backends\mysql\base.py"在这个路径里件把base.py
if version < (1, 3, 3):
raise ImproperlyConfigured(“mysqlclient 1.3.3 or newer is required; you have %s” % Database.version)
注释掉
\venv\lib\site-packages\django\db\backends\mysql\operations.py中
query = query.decode(errors=‘replace’),把decode改为encode即可。
定义模型
1.模型
模型类被定义在"应用/models.py"文件中,此例中为"mysqltest/models.py"文件。
模型类必须继承自Model类,位于包django.db.models中。
提示:对于重要数据使用逻辑删除。
from django.db import models
Create your models here.
#用户模型
class User(models.Model):
# 用户编号
user_no = models.CharField(max_length=200)
# 用户微信名
wechat_name = models.CharField(max_length=100, null=True, blank=True)#null代表数据库可为空,blank代表admin页面中表单可为空
# 用户头像url
wechat_pic = models.CharField(max_length=100, null=True, blank=True)
# 用户创建时间
create_date = models.DateField()
# 金币量
gold = models.IntegerField(default=50)
#互助表
class HelpInfo(models.Model):
# 申请用户
applyuser = models.ForeignKey('User', on_delete=models.CASCADE)
# 申请时间
apply_date = models.DateField()
# 链接
url = models.CharField(max_length=500)
# 标题
title = models.CharField(max_length=100)
# 内容
content = models.CharField(max_length=1000)
# 状态 1-代助力 2-已助力待确认 3-已助力
status = models.IntegerField(default=1)
#互助表
class HelpLog(models.Model):
# 互助总表
help_info = models.ForeignKey('HelpInfo', on_delete=models.CASCADE)
# 处理时间
deal_date = models.DateField()
# 处理人员
deal_user = models.ForeignKey('User', on_delete=models.CASCADE)
# 处理状态1-助力待确认 2-已确认 3-已驳回
status = models.IntegerField(default=1)
2.迁移
生成迁移文件。
python manage.py makemigrations
3.执行如下命令生成表。
python manage.py migrate
URL配置
在根目录下urls.py配置
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('help/', include('help.urls')),
path('admin/', admin.site.urls)
]
在创建的help目录下创建urls.py,填写你所需要的接口
from . import views
from django.urls import include, path
from django.views.generic import TemplateView
urlpatterns = [
path('', views.index, name='index'),
path('list', views.listall, name='listall'),
]
VIEW配置
进入view.py
def listall(request):
q_username = request.GET.get("username")
list = models.HelpInfo.objects.filter(~Q(applyuser__user_no=q_username), status=1).order_by("-id") # 从mysql查询所有
data = {} # 返回给页面的数据
data['list'] = list
data['totalpage'] = math.ceil(len(list) / 10)
return render(request, 'help/listall.html', data)
此处我把增删改查主要用到的操作列举一下。
1.查询(多种查询条件)
q_time = request.GET.get("time") #获取前端上送的值
q_status = request.GET.get("status")
search_dict = dict()
if q_username:
search_dict['applyuser__user_no'] = q_username#applyuser为foreignkey,这里代表applyuser表中userno字段
if q_time:
search_dict['apply_date_year'] = q_time[0:4] #apply_date为datefield,可通过年月日筛选
search_dict['apply_date_month'] = q_time[4:6]
search_dict['apply_date_day'] = q_time[6:8]
if q_status:
search_dict['status'] = q_status
list = models.HelpInfo.objects.filter(**search_dict).order_by("-id") # 从mysql查询
#或者
list = models.HelpInfo.objects.filter(~Q(applyuser__user_no=q_username), status=1).order_by("-id") #~Q代表不等于
2.新增
help= models.HelpInfo()
help.applyuser = helpinfo.applyuser
help.apply_date = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # %H:%M:%S
help.title = helpinfo.title
help.content = helpinfo.content
help.url = helpinfo.url
help.status = 1
help.save()#保存
3.修改
helpinfo = models.HelpInfo.objects.get(id=id)#获取需要修改的对象
helpinfo .title = “123”
helpinfo.save()
4.删除
helpinfo = models.HelpInfo.objects.get(id=id)#根据id获取数据
helpinfo.delete() #删除
WECHAT-SDK安装
wechat-sdk依赖于pycrypto-2.6.1,pycrypto依赖于vs2015 C++。
安装完[C++软件](地址:https://pan.baidu.com/s/18bjsvBIgBAhn5_6ApMcFew 密码: zkzf)后,设置VCINSTALLDIR环境变量, 设置为:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC
打开CMD,键入set CL=/FI"%VCINSTALLDIR%\INCLUDE\stdint.h" 。再用pip install pycrypto就可以成功。(我在pycharm的terminal里面试了无数次都失败了,发现只能从cmd中安装。。。)