Skip to content

Commit 1e7829d

Browse files
committedAug 3, 2019
add new api
1 parent d67dd75 commit 1e7829d

File tree

2 files changed

+176
-1
lines changed

2 files changed

+176
-1
lines changed
 

‎api/urls.py

+15
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,19 @@
1111
path('login', views.post_login),
1212
path('add_user', views.post_add_user),
1313
path('header', views.post_header),
14+
path('phone/<int:pid>/', views.phone),
15+
16+
# session 记录用户状态
17+
path('user_login', views.user_login),
18+
path('user_login_data', views.user_login_data),
19+
20+
21+
# 接口的依赖
22+
path('get_activity', views.get_activity),
23+
path('get_user', views.get_user),
24+
path('get_lucky_number', views.get_lucky_number),
25+
26+
# 文件上传
27+
path('upload_file', views.upload_file)
28+
1429
]

‎api/views.py

+161-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1+
import os
12
import json
2-
from django.http import JsonResponse
3+
from random import randint
4+
from django.http import JsonResponse, HttpResponseRedirect
5+
from django.contrib import auth
6+
from django.contrib.auth.decorators import login_required
7+
from guest2.settings import BASE_DIR
38

49

510
def hello_world(request):
@@ -115,3 +120,158 @@ def post_header(request):
115120
return JsonResponse(response)
116121
else:
117122
return JsonResponse({"code": 10101, "message": "request method error"})
123+
124+
125+
def phone(request, pid):
126+
"""
127+
一个URL, 根据不同的方法做不同的处理
128+
"""
129+
# 获取数据
130+
if request.method == 'GET':
131+
if pid == 1:
132+
phone_info = {
133+
"id": pid,
134+
"name": "小米手机",
135+
"price": 1999
136+
}
137+
response = {"code": 10201, "message": "get success", "data": phone_info}
138+
else:
139+
response = {"code": 10101, "message": "The phone id is empty"}
140+
return JsonResponse(response)
141+
142+
# 添加数据
143+
elif request.method == "POST":
144+
if pid != 1:
145+
name = request.POST.get('name')
146+
price = request.POST.get('price')
147+
phone_info = {
148+
"id": pid,
149+
"name": name,
150+
"price": price
151+
}
152+
response = {"code": 10202, "message": "add success", "data": phone_info}
153+
else:
154+
response = {"code": 10102, "message": "The pid already exists"}
155+
return JsonResponse(response)
156+
157+
# 更新数据
158+
elif request.method == "PUT":
159+
if pid == 1:
160+
name = request.GET.get('name')
161+
price = request.GET.get('price')
162+
phone_info = {
163+
"id": pid,
164+
"name": name,
165+
"price": price
166+
}
167+
response = {"code": 10203, "message": "update success", "data": phone_info}
168+
else:
169+
response = {"code": 10103, "message": "The updated phone id is empty"}
170+
return JsonResponse(response)
171+
172+
# 删除数据
173+
elif request.method == "DELETE":
174+
if pid == 1:
175+
response = {"code": 10204, "message": "delete success"}
176+
else:
177+
response = {"code": 10104, "message": "The deleted phone id is empty"}
178+
return JsonResponse(response)
179+
180+
181+
def user_login(request):
182+
"""
183+
通过Session 记录登录状态
184+
"""
185+
if request.method == "POST":
186+
login_username = request.POST.get("username")
187+
login_password = request.POST.get("password")
188+
if login_username == '' or login_password == '':
189+
return JsonResponse({"code": 10201, "message":"username or password null"})
190+
else:
191+
user = auth.authenticate(username=login_username, password=login_password)
192+
if user is not None:
193+
auth.login(request, user)
194+
# 将 session 信息记录到浏览器
195+
request.session['user'] = login_username
196+
return JsonResponse({"code": 10200, "message": "login success"})
197+
else:
198+
return JsonResponse({"code": 10202, "message": "username or password error"})
199+
else:
200+
return JsonResponse({"code": 10100, "message": "Request method error"})
201+
202+
203+
@login_required
204+
def user_login_data(request):
205+
"""
206+
通过Session读取用户数据
207+
"""
208+
username = request.session.get('user', '') # 读取浏览器 session
209+
if username == "":
210+
return JsonResponse({"code": 10200, "message": 'hello, stranger'})
211+
else:
212+
return JsonResponse({"code": 10200, "message": 'hello, {}'.format(username)})
213+
214+
215+
def get_activity(request):
216+
"""
217+
获取抽奖活动
218+
:return:
219+
"""
220+
if request.method == "GET":
221+
activity_info = {"id": 1, "name": "618抽奖活动"}
222+
return JsonResponse({"code": 10200, "message": "success", "data": activity_info})
223+
else:
224+
return JsonResponse({"code": 10101, "message": "request method error"})
225+
226+
227+
def get_user(request):
228+
"""
229+
获取抽奖用户
230+
"""
231+
if request.method == "GET":
232+
user_info = {"id": 1, "name": "张三"}
233+
return JsonResponse({"code": 10200, "message": "success", "data": user_info})
234+
else:
235+
return JsonResponse({"code": 10101, "message": "request method error"})
236+
237+
238+
def get_lucky_number(request):
239+
"""
240+
获取抽奖号码
241+
"""
242+
if request.method == "POST":
243+
activity_id = request.form.get('aid')
244+
user_id = request.form.get('uid')
245+
246+
if activity_id is None or user_id is None:
247+
return JsonResponse({"code": 10102, "message": "username or password is None"})
248+
249+
elif activity_id == "" or user_id == "":
250+
return JsonResponse({"code": 10103, "message": "username or password is null"})
251+
252+
if int(activity_id) != 1:
253+
return JsonResponse({"code": 10104, "message": "activity id exist"})
254+
255+
if int(user_id) != 1:
256+
return JsonResponse({"code": 10105, "message": "user id not exist"})
257+
258+
number = randint(10000, 99999)
259+
return JsonResponse({"code": 10200, "message": "Lucky draw number", "data": number})
260+
261+
else:
262+
return JsonResponse({"code": 10101, "message": "request method error"})
263+
264+
265+
def upload_file(request):
266+
"""
267+
文件上传
268+
"""
269+
if request.method == "POST":
270+
my_file = request.FILES.get("file", None)
271+
if not my_file:
272+
return JsonResponse({"code": 10101, "message": "no files for upload!"})
273+
destination = open(os.path.join(BASE_DIR, "api/upload", my_file.name), 'wb+')
274+
for chunk in my_file.chunks():
275+
destination.write(chunk)
276+
destination.close()
277+
return JsonResponse({"code": 10200, "message": "upload success!"})

0 commit comments

Comments
 (0)
Please sign in to comment.