Beispiel #1
0
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})
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)
Beispiel #6
0
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)
Beispiel #7
0
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)
Beispiel #8
0
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)
Beispiel #9
0
def test_session(request):
    request.session['message'] = 'Test Django Session OK!'
    response = wrap_json_response(code=ReturnCode.SUCCESS)
    return JsonResponse(data=response, safe=False)
Beispiel #10
0
def test_session2(request):
    print('session content: ', request.session.items())
    response = wrap_json_response(code=ReturnCode.SUCCESS)
    return JsonResponse(data=response, safe=False)
Beispiel #11
0
 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)
Beispiel #12
0
def testBaidu02(request):
    myCode = getCode()

    myResponse_data = wrap_json_response(data=myCode, code=ReturnCode.SUCCESS)
    return JsonResponse(data=myResponse_data, safe=False)
Beispiel #13
0
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)
Beispiel #14
0
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)
Beispiel #15
0
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)