def register(request): if request.method == "POST": print(request.get_full_path()) form_obj = forms.RegForm(request.POST) # 帮我做校验 if form_obj.is_valid(): # 校验通过,去数据库创建一个新的用户 form_obj.cleaned_data.pop("re_password") # 判断是否需要使用avatar的默认值【model默认值的使用规则】 myuser = None if request.FILES.get("avatar"): avatar_img = request.FILES.get("avatar") myuser = models.MyUserInfo.objects.create_user( **form_obj.cleaned_data, avatar=avatar_img) else: myuser = models.MyUserInfo.objects.create_user( **form_obj.cleaned_data) blog = Blog.objects.create(title=myuser.username) myuser.blog = blog myuser.save() # 注册成功后,跳转到登陆页面 myResponseData = wrap_json_response(code=ReturnCode.SUCCESS, message=settings.LOGIN_URL) else: myResponseData = wrap_json_response(data=form_obj.errors, code=ReturnCode.FAILED) return JsonResponse(data=myResponseData) # 生成一个form对象 form_obj = forms.RegForm() return render(request, "myauth/myRegister.html", {"form_obj": form_obj})
def saveWX(request): today = time.strftime("%F") files = request.FILES response_data = [] for key, uploaded_file in files.items(): newKey = key[-20:] fileType = os.path.splitext(newKey)[-1][1:] if (fileType in videoType): fileType = 'video' elif (fileType in documentType): fileType = 'video' else: fileType = 'image' ran_str = ''.join( random.sample(string.ascii_letters + string.digits, 8)) filename = today + "---" + ran_str + "---" + newKey weixinFile = WeiXinFile() weixinFile.name = filename weixinFile.file = uploaded_file weixinFile.type = fileType weixinFile.save() response_data.append({'name': key, 'md5': filename}) response = wrap_json_response(data=response_data, code=ReturnCode.SUCCESS) return JsonResponse(data=response, safe=False)
def searchArticle(request): searchInfo = request.GET.get("searchInfo") # 用于区分站点内搜索和全局搜索 # 对于全局搜索,username=searchInfo,对于博客内搜索,username=username username = request.GET.get("username", "") print('username in myarticle.views.searchArticle: ', username) myfilter = Q(title__icontains=searchInfo) | Q(desc__icontains=searchInfo) | Q(user__username__icontains=searchInfo) # 设置搜索文章的分类 wqn_category = int(request.GET.get("category", 9999)) if wqn_category != 9999: myfilter = Q( Q(title__icontains=searchInfo) | Q(desc__icontains=searchInfo) | Q(user__username__icontains=searchInfo)) & Q( category__nid__exact=wqn_category) if username != '': # 用于blog内搜索 articleList = list(models.Article.objects.filter( Q(Q(title__icontains=searchInfo) | Q(desc__icontains=searchInfo)) & Q(user__username__exact=username)). extra( select={"create_time_new": "date_format(myarticle_article.create_time,'%%Y-%%m-%%d %%H:%%i:%%s')", "avatarURL": "concat(%s,avatar)", "username": "******"}, select_params=(settings.MEDIA_URL,)). values("pk", "title", "create_time_new", "desc", "comment_count", "up_count", "user__phone", "avatarURL", "username")) else: # 用于全局搜索 articleList = list(models.Article.objects.filter(myfilter). extra( select={"create_time_new": "date_format(myarticle_article.create_time,'%%Y-%%m-%%d %%H:%%i:%%s')", "avatarURL": "concat(%s,avatar)", "username": "******"}, select_params=(settings.MEDIA_URL,)). values("pk", "title", "create_time_new", "desc", "comment_count", "up_count", "user__phone", "avatarURL", "username")) paginator = Paginator(articleList, 10) # 获取所有文章的总页数 page_total_num = paginator.num_pages # 页面上的search按钮,进行搜索时,需要有个默认值 startPageNum = request.GET.get("startPageNum",1) # 获取某页(page)的所有文章 page_article_list = list(paginator.page(startPageNum)) myResponseData = wrap_json_response(data={"articleList": page_article_list, "page_total_num": page_total_num, "startPageNum": startPageNum }, code=ReturnCode.SUCCESS) return JsonResponse(data=myResponseData, safe=False)
def createArticle(request): if request.method == 'GET': currentUser = request.user articleForm = forms.CreateArticleForm(False, currentUser) # currentArticleID: 用于编辑前端页面时使用,否则创建文章时会报错,在创建文章时无实际意义 return render(request, 'myarticle/createArticle.html', {'form_obj': articleForm, 'currentArticleID': 0}) else: form_obj = forms.CreateArticleForm(True, request.user, request.POST) if form_obj.is_valid(): # print("formOBJ in createArticle: ",type(form_obj.cleaned_data)) # print(form_obj.cleaned_data) myTags = form_obj.cleaned_data.get("tags") form_obj.cleaned_data.pop("tags") newArticle = models.Article.objects.create(**form_obj.cleaned_data, user=request.user) newArticle.tags.set(myTags) myUrl = reverse("myblog:user", kwargs={"username": request.user.username}) myResponseData = wrap_json_response(code=ReturnCode.SUCCESS, message=myUrl) return JsonResponse(data=myResponseData) else: myResponseData = wrap_json_response(data=form_obj.errors, code=ReturnCode.FAILED) return JsonResponse(data=myResponseData)
def editArticle(request, articleID): if request.method == 'GET': currentUser = request.user currentArticle = get_object_or_404(models.Article, pk=articleID) articleForm = forms.CreateArticleForm(True, currentUser, instance=currentArticle) return render(request, 'myarticle/createArticle.html', {'form_obj': articleForm, 'currentArticleID': currentArticle.pk}) else: form_obj = forms.CreateArticleForm(True, request.user, request.POST) if form_obj.is_valid(): # print("formOBJ in createArticle: ",type(form_obj.cleaned_data)) # print(form_obj.cleaned_data) myTags = form_obj.cleaned_data.get("tags") form_obj.cleaned_data.pop("tags") models.Article.objects.filter(pk=articleID).update(**form_obj.cleaned_data, user=request.user) models.Article.objects.filter(pk=articleID).first().tags.set(myTags) myUrl = reverse("myblog:user", kwargs={"username": request.user.username}) myResponseData = wrap_json_response(code=ReturnCode.SUCCESS, message=myUrl) return JsonResponse(data=myResponseData) else: myResponseData = wrap_json_response(data=form_obj.errors, code=ReturnCode.FAILED) return JsonResponse(data=myResponseData)
def postComment(request): pid = request.POST.get("pid") article_id = request.POST.get("article_id") content = request.POST.get("content") user_pk = request.user.pk response = {} if not pid: # 根评论 comment_obj = models.Comment.objects.create(article_id=article_id, user_id=user_pk, content=content) else: # 子评论 comment_obj = models.Comment.objects.create(article_id=article_id, user_id=user_pk, content=content, parent_comment_id=pid) models.Article.objects.filter(pk=article_id).update(comment_count=F("comment_count") + 1) myResponseData = wrap_json_response(code=ReturnCode.SUCCESS, message='success') return JsonResponse(data=myResponseData)
def thumbUp(request): article_id = request.POST.get('article_id') # 此处注意转换,从json string转换为boolean is_up = json.loads(request.POST.get('is_up')) user = request.user try: models.ArticleUpDown.objects.get(article_id=article_id, user=request.user) except Exception as e: models.ArticleUpDown.objects.create(user=user, article_id=article_id) models.ArticleUpDown.objects.filter(user=user, article_id=article_id).update(is_up=is_up) # 更新点赞表 if is_up: models.Article.objects.filter(pk=article_id).update(up_count=F("up_count") + 1) else: models.Article.objects.filter(pk=article_id).update(up_count=F("up_count") - 1) thumbCount = models.Article.objects.get(pk=article_id).up_count myResponseData = wrap_json_response(data={"thumbCount": thumbCount}, code=ReturnCode.SUCCESS, message=is_up) return JsonResponse(data=myResponseData, safe=False)
def getRecentWX(request): # 暂且设置,只获取图片 recentFiles = WeiXinFile.objects.filter( type='image').order_by('votes')[:10] imageList = [] videoList = [] response_data = [] for file01 in recentFiles: json_dict = {} json_dict["name"] = file01.name json_dict["url"] = settings.MyServerPrefix + file01.file.url logger.info(file01.file.url) if (file01.type == 'image'): imageList.append(json_dict) else: videoList.append(json_dict) logger.info('2222') response_data.append({'imageList': imageList, 'videoList': videoList}) logger.info('1111') response = wrap_json_response(data=response_data, code=ReturnCode.SUCCESS) return JsonResponse(data=response, safe=False)
def test_session(request): request.session['message'] = 'Test Django Session OK!' response = wrap_json_response(code=ReturnCode.SUCCESS) return JsonResponse(data=response, safe=False)
def test_session2(request): print('session content: ', request.session.items()) response = wrap_json_response(code=ReturnCode.SUCCESS) return JsonResponse(data=response, safe=False)
def get(self, request): myresponse_content = {'data33': "cccc"} myResponse_data = wrap_json_response(data=myresponse_content, code=ReturnCode.SUCCESS) return JsonResponse(data=myResponse_data, safe=False)
def testBaidu02(request): myCode = getCode() myResponse_data = wrap_json_response(data=myCode, code=ReturnCode.SUCCESS) return JsonResponse(data=myResponse_data, safe=False)
def testBaidu01(request): myCode = request.GET.get("code") logger.info("Baidu Return Code : ", myCode) result = getToken(myCode) myResponse_data = wrap_json_response(data=result, code=ReturnCode.SUCCESS) return JsonResponse(data=myResponse_data, safe=False)
def basicTest03(request): myresponse_content = {'data22': "bbb"} myResponse_data = wrap_json_response(data=myresponse_content, code=ReturnCode.SUCCESS) return JsonResponse(data=myResponse_data, safe=False)
def __authorize_by_code(request): if (request.session.session_key is not None): logger.info('session content in auth/authorize01: ' + request.session.session_key) # , " : " + request.session.items() response = {} post_data = request.body.decode('utf-8') post_data = json.loads(post_data) app_id = post_data.get('appId').strip() nickname = post_data.get('nickname').strip() code = post_data.get('code').strip() if not (app_id and code): response['result_code'] = ReturnCode.BROKEN_AUTHORIZED_DATA response[ 'message'] = 'authorized failed. need entire authorization data.' return JsonResponse(response, safe=False) try: # 标准微信访问 data = c2s(app_id, code) except Exception as e: print("exception occured: ", e) response['result_code'] = ReturnCode.FAILED response['message'] = 'authorized failed.' return JsonResponse(response, safe=False) open_id = data.get('openid') if not open_id: response['result_code'] = ReturnCode.FAILED response['message'] = 'authorization error.' return JsonResponse(response, safe=False) request.session['open_id'] = open_id request.session['is_authorized'] = True if (request.session.session_key is not None): logger.info('session content in auth/authorize01: ' + request.session.session_key) # User.objects.get(open_id=open_id) # 不要用get,用get查询如果结果数量 !=1 就会抛异常 # 如果用户不存在,则新建用户 if not User.objects.filter(open_id=open_id): # if nickname != "宁默": # response['result_code'] = ReturnCode.FAILED # response['message'] = 'You are not my kids.' # return JsonResponse(response, safe=False) # else: new_user = User(open_id=open_id, nickname=nickname) # 初始化新用户 new_user.save() # 默认情况下为用户添加“图片上传功能” initMenu = [] imageApp = App.objects.get( appid='549eaaf72cb23716e2b1313acfaed23c') # 图片上传 # print("this is myInit method in User: "******"add new user : "******"add a new user : " + new_user.nickname) message = 'user authorize successfully.' response = wrap_json_response(data={}, code=ReturnCode.SUCCESS, message=message) return JsonResponse(response, safe=False)