views.py 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654
  1. # -*- coding: utf-8 -*-
  2. from django.shortcuts import render, redirect
  3. # from apps.SystemManage.forms import AddUserForm
  4. from django.http import HttpResponse
  5. from django.template import RequestContext
  6. from django.contrib import auth
  7. from django.contrib.auth import authenticate, login as auth_login, logout
  8. from django.contrib.auth import get_user_model
  9. from django.contrib.auth.models import User, Group, Permission
  10. from django.contrib.auth.hashers import make_password, check_password
  11. from django.contrib.auth.decorators import login_required
  12. from django.views.decorators.csrf import csrf_exempt
  13. from django.views.generic import ListView
  14. from django.views.generic.base import View
  15. import datetime
  16. from PIL import Image
  17. import time
  18. import json
  19. import base64
  20. import redis
  21. import random
  22. from django.core.cache import cache
  23. import os
  24. # from configure import verification_code
  25. import re
  26. from apps.AppInfo.models import Equip, Equip_type, MyUser, QXZdata, QXZstatus, QXZdata_New, JKdata, Article, QXZstatus_New, QXZswitchdata, QXZswitchstatus, CKArticle, GardenManage, Video_data,\
  27. Product, Pick_Pub, FarmList, Hotel_Info, GardenArea, Sightsee_Info,Hotel_Info, Relations
  28. from qcloudsms_py import SmsSingleSender
  29. from qcloudsms_py.httpclient import HTTPError
  30. import requests
  31. from django.utils.decorators import method_decorator
  32. from .allocation import administrators,ordinary
  33. # Create your views here.
  34. """
  35. appkey 和 AppSecret
  36. 1、先调用我们开放的接口,获取 userid和code
  37. 2、然后使用userid 和code 带上appkey 和 AppSecret 请求客户提供的接口地址,获取用户信息
  38. 3、根据返回的数据进行判断是否登陆
  39. """
  40. """
  41. {
  42. "timestamp": "2020-09-04 10:04:37",
  43. "status": 404,
  44. "error": "Not Found",
  45. "message": "No message available",
  46. "path": "/ducore//oauth/oauthLogin/oauthLogin/"
  47. }
  48. {
  49. "success": true,
  50. "message": "操作成功!",
  51. "code": 200,
  52. "result": {
  53. "address": "",
  54. "sex": 1,
  55. "telephone": "",
  56. "avatar": "files/20200902/3184478c3fe1ae8c6e2aa3828a6e62c_1599017263910.jpg",
  57. "isAdmin": "N",
  58. "delFlag": "0",
  59. "realname": "黄豪",
  60. "workNo": "11111",
  61. "kodaE": "",
  62. "post": "",
  63. "phone": "15959191107",
  64. "identity": "",
  65. "orgCode": "A01A03",
  66. "kodaPassword": "888888",
  67. "id": "5b75626a-1559-4596-aca5-3dcfaa736254",
  68. "kodaUsername": "0591002000007",
  69. "kodaId": "0591002000007",
  70. "email": "",
  71. "status": 1,
  72. "username": "15959191107"
  73. },
  74. "timestamp": 1599184606585
  75. }
  76. """
  77. app_key = "u8dF3opl0xCq1a"
  78. app_secret = "Qz4jLdSisLDzyDxCdog7"
  79. urls = "http://10.10.0.227:17022/ducore/oauth/oauthLogin/oauthLogin/"
  80. # url = "http://47.104.218.216:80/tests"
  81. # url = ""
  82. headers = {"app_key":app_key,"app_secret":app_secret}
  83. #登陆校验
  84. class Log_Verify(View):
  85. def get(self,request):
  86. user_news = CKArticle.objects.filter(art_type=5)[0:10]
  87. zero_news = CKArticle.objects.filter(art_type=0)[0:10]
  88. one_news = CKArticle.objects.filter(art_type=1)[0:10]
  89. two_news = CKArticle.objects.filter(art_type=2)[0:10]
  90. video_news = Video_data.objects.all()[0:4]
  91. product = Product.objects.all()[0:8]
  92. pick = Pick_Pub.objects.filter(hidden=True)[0:8]
  93. farm = FarmList.objects.all()[0:8]
  94. garden = GardenArea.objects.filter(hidden=True)[0:6]
  95. hotel = Hotel_Info.objects.filter(hidden=True)[0:6]
  96. article = CKArticle.objects.filter(hidden=True)[0:12]
  97. sightsee = Sightsee_Info.objects.filter(hidden=True)[0:6]
  98. hotel2 = Hotel_Info.objects.filter(hidden=True).order_by('-upl_time')[0:6]
  99. relation = Relations.objects.all()
  100. userId = request.GET.get("userId")
  101. print("userId",userId)
  102. code = request.GET.get("code")
  103. print("code",code)
  104. data = {"userId":userId,"code":code}
  105. data = json.dumps(data)
  106. url = urls + userId + "/" + code
  107. res = requests.post(url,headers=headers)
  108. rest = json.loads(res.text)
  109. #校验登陆是否成功
  110. try:
  111. code = rest["code"]
  112. except:
  113. code = 400
  114. if code == 200:
  115. username = rest["result"]["username"]
  116. try:
  117. curr_user = MyUser.objects.get(username=username)
  118. except:
  119. curr_user = ""
  120. isadmin = rest["result"]["isAdmin"]
  121. # 普通用户
  122. if isadmin == "N":
  123. limit = ordinary
  124. num = 1
  125. # 管理员
  126. else:
  127. limit = administrators
  128. num = 2
  129. # 设置默认密码
  130. password = "qwerdf123456"
  131. # 修改
  132. if curr_user:
  133. curr_user.user_remark = rest["result"]["realname"]
  134. curr_user.user_picture = rest["result"]["avatar"]
  135. curr_user.user_phone = rest["result"]["phone"]
  136. curr_user.save()
  137. # 新增
  138. else:
  139. if num == 1:
  140. # 普通用户
  141. MyUser.objects.create_user(
  142. user_remark = rest["result"]["realname"],
  143. user_picture = rest["result"]["avatar"],
  144. user_phone = rest["result"]["phone"],
  145. username = rest["result"]["username"],
  146. password=password,
  147. limit=limit
  148. )
  149. else:
  150. # 管理员
  151. MyUser.objects.create_user(
  152. user_remark = rest["result"]["realname"],
  153. user_picture = rest["result"]["avatar"],
  154. user_phone = rest["result"]["phone"],
  155. username = rest["result"]["username"],
  156. password=password,
  157. limit=limit,
  158. is_superuser=1,
  159. is_staff=1
  160. )
  161. request.session['username'] = username
  162. return render(request, 'outerNet/index2.html', context={"user_news": user_news,"zero_news": zero_news, "one_news": one_news,"article":article,"relation":relation,
  163. "two_news": two_news, "video_news": video_news,"hotel":hotel,"garden":garden,"hotel2":hotel2,
  164. "product": product, "pick": pick, "farm": farm, "curr_user": curr_user,"sightsee":sightsee})
  165. else:
  166. return HttpResponse("1")
  167. class Home_Test(View):
  168. def get(self, request):
  169. pass
  170. def post(self, request):
  171. pass
  172. # 用户登录
  173. @method_decorator(csrf_exempt, name='dispatch')
  174. class Login_View(View):
  175. def get(self, request):
  176. HTTP_HOST = request.META['HTTP_HOST']
  177. print('HTTP_HOST:', HTTP_HOST)
  178. # form = AddUserForm()
  179. # return render(request, 'home/login.html', context={'form': form})
  180. if request.user.is_authenticated():
  181. user_name = request.user.username
  182. print('user_name=', user_name)
  183. current_user = MyUser.objects.get(username=user_name)
  184. if current_user.is_superuser:
  185. role = "superuser"
  186. elif current_user.is_staff:
  187. role = "staff"
  188. else:
  189. role = "user"
  190. print("当前用户类型:是否为超级管理员", current_user.is_superuser)
  191. return render(request, 'home/home.html', context={'user_name': user_name, 'role': role})
  192. else:
  193. if HTTP_HOST == "127.0.0.1" or HTTP_HOST == "120.27.222.26":
  194. return render(request, 'home/login.html', context={})
  195. def post(self, request):
  196. user_name = request.POST.get('username')
  197. pass_word = request.POST.get('password')
  198. print('输入的用户名:', user_name)
  199. user = MyUser.objects.extra(
  200. where=['binary username=%s'], params=[user_name])
  201. print("user.exists():", user.exists())
  202. if user.exists() == False:
  203. data = "0"
  204. return HttpResponse(data)
  205. else:
  206. user = MyUser.objects.get(username=user_name)
  207. if user.is_active != True:
  208. data = "2"
  209. return HttpResponse(data)
  210. else:
  211. if check_password(pass_word, user.password) != True:
  212. data = "3"
  213. return HttpResponse(data)
  214. else:
  215. print('登陆成功')
  216. current_user = MyUser.objects.get(username=user_name)
  217. auth_user = authenticate(
  218. username=user_name, password=pass_word)
  219. auth_login(request, auth_user)
  220. # 将当前登录的用户名写入session
  221. request.session['username'] = user_name
  222. if user.is_superuser:
  223. role = "superuser"
  224. elif user.is_staff:
  225. role = "staff"
  226. else:
  227. role = "user"
  228. data = "1"
  229. returnUrl = request.POST.get('returnUrl')
  230. print("returnUrl:", returnUrl)
  231. if returnUrl == None:
  232. print("returnUrl is none!!!!!!!!")
  233. return HttpResponse(data)
  234. else:
  235. if returnUrl == "":
  236. print("returnUrl is empty")
  237. return render(request, 'outerNet/index2.html')
  238. elif returnUrl != "":
  239. print("returnUrl is not empty")
  240. return render(request, 'outerNet/index.html')
  241. # 用户登录2
  242. class Login2_View(View):
  243. def get(self, request):
  244. return render(request, 'outerNet/login2.html', context={})
  245. def post(self, request):
  246. pass
  247. # 注册
  248. class ForgetPaw_View(View):
  249. def get(self, request):
  250. return render(request, 'outerNet/forgetPaw.html', context={})
  251. def post(self, request):
  252. pass
  253. # 注册
  254. class register_View(View):
  255. def get(self, request):
  256. return render(request, 'outerNet/register.html', context={})
  257. def post(self, request):
  258. pass
  259. # 外网首页
  260. class Home(View):
  261. def get(self, request):
  262. user_news = CKArticle.objects.filter(art_type=5)[0:10]
  263. zero_news = CKArticle.objects.filter(art_type=0)[0:10]
  264. one_news = CKArticle.objects.filter(art_type=1)[0:10]
  265. two_news = CKArticle.objects.filter(art_type=2)[0:10]
  266. video_news = Video_data.objects.all()[0:4]
  267. product = Product.objects.all()[0:8]
  268. pick = Pick_Pub.objects.filter(hidden=True)[0:8]
  269. farm = FarmList.objects.all()[0:8]
  270. garden = GardenArea.objects.filter(hidden=True)[0:6]
  271. hotel = Hotel_Info.objects.filter(hidden=True)[0:6]
  272. article = CKArticle.objects.filter(hidden=True)[0:12]
  273. sightsee = Sightsee_Info.objects.filter(hidden=True)[0:6]
  274. hotel2 = Hotel_Info.objects.filter(hidden=True).order_by('-upl_time')[0:6]
  275. relation = Relations.objects.all()
  276. if request.user.is_authenticated():
  277. user_name = request.user.username
  278. curr_user = MyUser.objects.get(username=user_name)
  279. print('user_name=', user_name)
  280. print('user=', curr_user.username)
  281. else:
  282. curr_user = ""
  283. return render(request, 'outerNet/index2.html', context={"user_news": user_news,"zero_news": zero_news, "one_news": one_news,"article":article,"relation":relation,
  284. "two_news": two_news, "video_news": video_news,"hotel":hotel,"garden":garden,"hotel2":hotel2,
  285. "product": product, "pick": pick, "farm": farm, "curr_user": curr_user,"sightsee":sightsee})
  286. def post(self, request):
  287. pass
  288. # # 外网首页2-------------暂时不用
  289. # class Home2(View):
  290. # def get(self, request):
  291. # user_news = CKArticle.objects.filter(art_type=5)[0:10]
  292. # zero_news = CKArticle.objects.filter(art_type=0)[0:10]
  293. # one_news = CKArticle.objects.filter(art_type=1)[0:10]
  294. # two_news = CKArticle.objects.filter(art_type=2)[0:10]
  295. # video_news = Video_data.objects.all()[0:4]
  296. # product = Product.objects.all()[0:8]
  297. # pick = Pick_Pub.objects.all()[0:6]
  298. # garden = GardenArea.objects.all()
  299. # farm = FarmList.objects.all()
  300. # hotel = Hotel_Info.objects.all()[0:5]
  301. # article = CKArticle.objects.all()[0:12]
  302. # if request.user.is_authenticated():
  303. # user_name = request.user.username
  304. # curr_user = MyUser.objects.get(username=user_name)
  305. # print('user_name=', user_name)
  306. # print('user=', curr_user.username)
  307. # else:
  308. # curr_user = ""
  309. # return render(request, 'outerNet/index2.html', context={"user_news": user_news,"zero_news": zero_news, "one_news": one_news,"farm":farm,
  310. # "two_news": two_news, "video_news": video_news,"hotel":hotel,"article":article,
  311. # "product": product, "pick": pick, "garden": garden, "curr_user": curr_user})
  312. # def post(self, request):
  313. # pass
  314. # 首页设备显示
  315. class Home_Equip(View):
  316. def get(self, request):
  317. pass
  318. def post(self, request):
  319. pass
  320. #修改个人信息,
  321. class Modify_Head(ListView):
  322. def get(self, request):
  323. art_list = MyUser.objects.get(username="admin")
  324. print(art_list.username)
  325. return render(request, "backstageNet/systemSet/systemSet.html", context={"art_list": art_list})
  326. def post(self, request):
  327. head = request.POST.get("user_picture")
  328. remark = request.POST.get("user_remark")
  329. phone = request.POST.get("user_phone")
  330. name = request.POST.get("username")
  331. try:
  332. art_list = MyUser.objects.filter(username=name).update(
  333. user_picture=head,
  334. user_remark=remark,
  335. user_phone=phone
  336. )
  337. data = "1"
  338. except Exception as e:
  339. print(e)
  340. data = "0"
  341. return HttpResponse(data)
  342. # 头像上传
  343. class User_Img(ListView):
  344. def get(self, request):
  345. pass
  346. def post(self, request):
  347. user_photo = request.FILES.get('user_photo')
  348. if user_photo:
  349. print("头像图片:", user_photo)
  350. user_photo_dir = 'user_photo/'
  351. end_name = user_photo.name.split('.')[-1]
  352. # 判断如果路径不存在,即创建路径
  353. if os.path.exists(user_photo_dir) == False:
  354. os.makedirs(user_photo_dir)
  355. img = Image.open(user_photo)
  356. now_time = time.strftime(
  357. '%Y%m%d%H%M%S', time.localtime(time.time()))
  358. pic_name = now_time + '.' + end_name
  359. print("pic_name:", pic_name)
  360. img.save(user_photo_dir + pic_name)
  361. user_photo = user_photo_dir + pic_name
  362. print("user_photo:", user_photo)
  363. data = {"code": 0, "msg": "", "data": {"src": user_photo}}
  364. else:
  365. user_photo = "0"
  366. data = {"code": 404, "msg": "", "data": {"src": user_photo}}
  367. data = json.dumps(data)
  368. return HttpResponse(data)
  369. #新建用户
  370. class User_News(ListView):
  371. def get(self,request):
  372. pass
  373. def post(self,request):
  374. username = request.POST.get("username")
  375. user_remark = request.POST.get("user_remark")
  376. user_phone = request.POST.get("user_phone")
  377. email = request.POST.get("email")
  378. #用户登陆
  379. class User_Land(ListView):
  380. def get(self,request):
  381. pass
  382. def post(self, request):
  383. user_name = request.POST.get("username")
  384. pass_word = request.POST.get("password")
  385. print('输入的用户名', user_name)
  386. print('输入的密码:', pass_word)
  387. user = MyUser.objects.extra(
  388. where=['binary username=%s'], params=[user_name])
  389. print("user.exists():", user.exists())
  390. if user.exists() == False:
  391. data = 0
  392. print("用户不存在")
  393. data = json.dumps(data)
  394. return HttpResponse(data)
  395. else:
  396. user = MyUser.objects.get(username=user_name)
  397. if user.is_active != True:
  398. data = 2
  399. print("用户名错误")
  400. data = json.dumps(data)
  401. return HttpResponse(data)
  402. else:
  403. if check_password(pass_word, user.password) != True:
  404. data = 3
  405. print('密码错误')
  406. data = json.dumps(data)
  407. return HttpResponse(data)
  408. else:
  409. print('登陆成功')
  410. auth_user = authenticate(
  411. username=user_name, password=pass_word)
  412. auth_login(request, auth_user)
  413. # 将当前登录的用户名写入session
  414. request.session['username'] = user_name
  415. art_list = MyUser.objects.filter(username=user_name)
  416. for i in art_list:
  417. he = {"username":i.username,"user_img":i.user_picture.name,"code":1 }
  418. data = json.dumps(he)
  419. print("data:", data)
  420. return HttpResponse(data)
  421. # 用户退出
  422. @login_required
  423. def logout(request):
  424. print("用户退出")
  425. del request.session['username']# 删除session
  426. auth.logout(request)
  427. return redirect('/login2')
  428. #判断用户是否已登陆
  429. class User_Check(ListView):
  430. # def get(self,request):
  431. # pass
  432. def get(self, request):
  433. ret_url = request.path_info
  434. print(ret_url)
  435. if ret_url == "/home":
  436. return HttpResponse(ret_url)
  437. else:
  438. print(000)
  439. return HttpResponse("00000")
  440. # 短信应用 SDK AppID
  441. appid = 1400227496 # SDK AppID 以1400开头
  442. # 短信应用 SDK AppKey
  443. appkey = "c9aba961bd30072f1e1b9272077abaea"
  444. #签名
  445. sms_sign = "云飞科技" # NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台中申请
  446. #发送验证码
  447. #1验证码不正确,2两次密码不一致4用户不存在请注册3手机号不正确 0重置密码成功
  448. class Prove_Code(ListView):
  449. def post(self, request):
  450. # phone = json.loads(request.body.decode())
  451. # num = verification_code()
  452. # num = 123456
  453. num = ""
  454. for i in range(6):
  455. ch = chr(random.randrange(ord('0'), ord('9') + 1))
  456. num += ch
  457. mobile = request.POST.get("mobile")
  458. pass_word1 = request.POST.get("password")
  459. pass_word2 = request.POST.get("password2")
  460. code = request.POST.get("code")
  461. ret = request.POST.get("ret")
  462. # imei = request.POST.get("imei")
  463. # try:
  464. # #提取imei
  465. # imei = json.loads(imei)
  466. # imeid = imei["uuid"]
  467. # if imeid.find(",") != -1:
  468. # imeid = imeid.split(",")[0]
  469. # else:
  470. # pass
  471. # print("imeid",imeid)
  472. # except Exception as e:
  473. # print(e)
  474. # data = 0
  475. # return HttpResponse(data)
  476. mobile_pat = re.compile('^(13\d|14[5|7]|15\d|166|17\d|18\d)\d{8}$')
  477. res = re.search(mobile_pat, mobile)
  478. if ret == "see":
  479. #校验手机号是否已经注册
  480. if MyUser.objects.filter(username=mobile).exists():
  481. data = 1
  482. else:
  483. #发送短信验证码
  484. template_id = 496156 # NOTE: 这里的模板 ID`7839`只是示例,真实的模板 ID 需要在短信控制台中申请
  485. # # 签名
  486. ssender = SmsSingleSender(appid, appkey)
  487. params = [num, "1"]
  488. #发送短信验证码
  489. result = ssender.send_with_param(86, mobile,
  490. template_id, params, sign=sms_sign, extend="", ext="")
  491. if result["result"] == 0:
  492. data = 0
  493. request.session["code"] = num
  494. else:
  495. data = 2
  496. elif ret == "land": #注册
  497. try:
  498. #登陆校验 获取存到session 中的验证码,与用户输入的验证码比较,
  499. #如果在60内没有输入正确的验证码会直接删除,而这个时候就获取不到code 了
  500. num = request.session.get('code')
  501. except Exception as e:
  502. print(e)
  503. data = 2
  504. return HttpResponse(data)
  505. if MyUser.objects.filter(username=mobile).exists():
  506. data = 1
  507. else:
  508. if code == num:
  509. #在验证码输入正确的情况下,校验输入的两次密码是否一致
  510. if pass_word1 == pass_word2:
  511. code = mobile[:5]
  512. user_remark = "勤劳的园丁"+ code
  513. MyUser.objects.create_user(
  514. username=mobile, password=pass_word1,user_remark=user_remark)
  515. data = 5
  516. # 验证码存在session中,在用户注册成功后要删除设置的验证码,
  517. del request.session['code']
  518. else:
  519. data = 4
  520. else:
  521. data = 2
  522. return HttpResponse(data)
  523. #重置密码
  524. class Reset_Password(ListView):
  525. def post(self, request):
  526. # phone = json.loads(request.body.decode())
  527. num = ""
  528. for i in range(6):
  529. ch = chr(random.randrange(ord('0'), ord('9') + 1))
  530. num += ch
  531. mobile = request.POST.get("mobile")
  532. pass_word1 = request.POST.get("password")
  533. pass_word2 = request.POST.get("password2")
  534. code = request.POST.get("code")
  535. ret = request.POST.get("ret")
  536. if ret == "see":
  537. mobile_pat = re.compile('^(13\d|14[5|7]|15\d|166|17\d|18\d)\d{8}$')
  538. res = re.search(mobile_pat, mobile)
  539. if res:
  540. #校验手机号
  541. if MyUser.objects.filter(username=mobile).exists():
  542. template_id = 496444 # NOTE: 这里的模板 ID`7839`只是示例,真实的模板 ID 需要在短信控制台中申请
  543. # # 签名
  544. ssender = SmsSingleSender(appid, appkey)
  545. params = [num, "1"]
  546. #发送短信验证码
  547. result = ssender.send_with_param(86, mobile,
  548. template_id, params, sign=sms_sign, extend="", ext="")
  549. if result["result"] == 0:
  550. data = 0
  551. #把验证码存到session中,以便后续校验
  552. request.session["code"] = num
  553. else:
  554. data = 2
  555. else:
  556. data = 4
  557. else:
  558. data = 3
  559. elif ret == "land":
  560. try:
  561. #如果在60内没有输入正确的验证码会直接删除,而这个时候就获取不到code 了
  562. num = request.session.get('code')
  563. except Exception as e:
  564. data = 1
  565. return HttpResponse(data)
  566. if MyUser.objects.filter(username=mobile).exists():
  567. if pass_word1 == pass_word2:
  568. if num == code:
  569. req = MyUser.objects.get(username=mobile)
  570. #密码进行加密
  571. req.set_password(pass_word1)
  572. # pass_word3 = make_password(pass_word1)
  573. # req.password = pass_word3
  574. req.save()
  575. # 验证码存在session中,在用户注册成功后要删除设置的验证码,
  576. del request.session['code']
  577. data = 0
  578. else:
  579. data = 1
  580. else:
  581. data = 2
  582. else:
  583. data = 4
  584. return HttpResponse(data)