因为在一个项目需要接口服务。通过接口url可以实现写入和读取等功能。
django 搭建web服务
1)新建一个 django project
django-admin.py startproject project_name (例如本案例项目名为ads)
2)新建 app
python manage.py startapp app_name (例如本应用名为material)
一般一个项目有多个app, 当然通用的app也可以在多个项目中使用。
还得在工程目录的settings.py文件在配置
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework', #
'app_name',
]
在app/views.py下编写代码
def index(request):
return HttpResponse(u"你好")
在工程目录urls.py配置
from learn import views as learn_views
urlpatterns = [
url(r'^$', learn_views.index),
]
通过python manage.py runserver启动,就会看到我们输出的“你好”了
3)创建数据库表 或 更改数据库表或字段
在app下的models.py创建表
from django.db import models
class DeadWx(models.Model):
deadwx = models.CharField(max_length=100)
class Meta:
ordering = ['deadwx']
class CheckWx(models.Model):
did = models.CharField(max_length=50)
calltel = models.CharField(max_length=50)
user = models.CharField(max_length=500)
siteid = models.IntegerField()
agentid = models.IntegerField()
agentname = models.CharField(max_length=50)
wx = models.CharField(max_length=50)
status = models.CharField(max_length=50)
updatetime = models.CharField(max_length=50)
created_time = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ['-created_time']
运行命令,就可以生成对应的表
Django 1.7.1及以上 用以下命令
# 1. 创建更改的文件
python manage.py makemigrations
# 2. 将生成的py文件应用到数据库
python manage.py migrate
from django.db import models
在views.py文件里就可以获取数据库的数据
def create(request):
# 新建一个对象的方法有以下几种:
Person.objects.create(name='xiaoli', age=18)
# p = Person(name="WZ", age=23)
# p = Person(name="TWZ")
# p.age = 23
# p.save()
# 这种方法是防止重复很好的方法,但是速度要相对慢些,返回一个元组,第一个为Person对象,
# 第二个为True或False, 新建时返回的是True, 已经存在时返回False
# Person.objects.get_or_create(name="WZT", age=23)
s = Person.objects.get(name='xiaoli')
return HttpResponse(str(s))
写接口
接口使用rest_framework,rest_framework是一套基于Django 的 REST 框架,是一个强大灵活的构建 Web API 的工具包。
写接口三步完成:连接数据库、取数据、数据输出
1)连接数据库
在工程目录下的settings.py文件下配置, 需要提前安装好mysql或者mariadb等数据库。
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysql',
'USER': 'root',
'HOST': '127.0.0.1', # localhost
'PASSWORD': '123', # 密码
'PORT': 3306,
# show variables like 'character_set_database';
# 修改字段字符编码
# alter table spiders_weibo modify text longtext charset utf8mb4 collate utf8mb4_unicode_ci;
'OPTIONS': {'charset': 'utf8mb4'},
}
}
创建一个序列化Serializer类
提供序列化和反序列化的途径,使之可以转化为,某种表现形式如json。我们可以借助serializer来实现,类似于Django表单(form)的运作方式。在app目录下,创建文件serializers.py。