コード例 #1
0
def post(post_id=None, slug=None):
    try:
        _post = get_post(post_id, slug)
    except NoResultFound:
        abort(404)
    log.debug("post: %s", _post)
    return render_template("post/post_page.html", post=_post)
コード例 #2
0
ファイル: post_views.py プロジェクト: ant1441/flask-blog
def post(post_id=None, slug=None):
    try:
        _post = get_post(post_id, slug)
    except NoResultFound:
        abort(404)
    log.debug("post: %s", _post)
    return render_template("post/post_page.html",
                           post=_post)
コード例 #3
0
ファイル: post_views.py プロジェクト: ant1441/flask-blog
def json_post(post_id=None, slug=None):
    try:
        _post = get_post(post_id, slug)
    except NoResultFound:
        abort(404)
    _post = to_json(_post)
    log.debug("post: %s", _post)
    return _post
コード例 #4
0
def json_post(post_id=None, slug=None):
    try:
        _post = get_post(post_id, slug)
    except NoResultFound:
        abort(404)
    _post = to_json(_post)
    log.debug("post: %s", _post)
    return _post
コード例 #5
0
ファイル: post_views.py プロジェクト: ant1441/flask-blog
def new_post():
    """
    Create a new post.

    If :GET: present the form to submit a new post.
    If :POST:, if valid, submit the post and redirect to home.
    """
    form = PostBlogForm()
    if form.validate_on_submit():
        log.info("User %s submitted post %s",
                 current_user,
                 form.title.data)
        log.debug("CodeType: %s", form.code_type.data)
        if form.code_type.data is None:
            code = False
        else:
            code = True
        post = Post(title=form.title.data,
                    slug=form.slug.data,
                    content=form.text.data,
                    user=current_user,
                    code=code,
                    code_type=form.code_type.data,)
        db.session.add(post)
        try:
            db.session.commit()
        except IntegrityError as exc:
            if exc.message.endswith("not unique"):
                log.error("Post '%s' was not unique in field '%s'",
                          form.title.data,
                          exc.message
                          .split(" ", 2)[-1].rsplit(" ", 3)[0])
            else:
                log.critical("Unknown Integrity Error with post '%s'",
                             form.title.data,
                             exc_info=True)
            db.session.rollback()
            flash("Integrity Error!", 'danger')
            return render_template("post/make_post.html",
                                   title="Post Blog",
                                   form=form)
        except:
            log.critical("Exception on %s [%s]",
                         'page',
                         'method',
                         exc_info=True)
            db.session.rollback()
            abort(500)
        flash("{} submitted {}.".format(
            current_user.username,
            form.title.data), 'success')
        return redirect(url_for('index'))
    return render_template("post/make_post.html",
                           title="Post Blog",
                           form=form)
コード例 #6
0
def new_post():
    """
    Create a new post.

    If :GET: present the form to submit a new post.
    If :POST:, if valid, submit the post and redirect to home.
    """
    form = PostBlogForm()
    if form.validate_on_submit():
        log.info("User %s submitted post %s", current_user, form.title.data)
        log.debug("CodeType: %s", form.code_type.data)
        if form.code_type.data is None:
            code = False
        else:
            code = True
        post = Post(
            title=form.title.data,
            slug=form.slug.data,
            content=form.text.data,
            user=current_user,
            code=code,
            code_type=form.code_type.data,
        )
        db.session.add(post)
        try:
            db.session.commit()
        except IntegrityError as exc:
            if exc.message.endswith("not unique"):
                log.error("Post '%s' was not unique in field '%s'",
                          form.title.data,
                          exc.message.split(" ", 2)[-1].rsplit(" ", 3)[0])
            else:
                log.critical("Unknown Integrity Error with post '%s'",
                             form.title.data,
                             exc_info=True)
            db.session.rollback()
            flash("Integrity Error!", 'danger')
            return render_template("post/make_post.html",
                                   title="Post Blog",
                                   form=form)
        except:
            log.critical("Exception on %s [%s]",
                         'page',
                         'method',
                         exc_info=True)
            db.session.rollback()
            abort(500)
        flash(
            "{} submitted {}.".format(current_user.username, form.title.data),
            'success')
        return redirect(url_for('index'))
    return render_template("post/make_post.html", title="Post Blog", form=form)
コード例 #7
0
ファイル: views.py プロジェクト: ifyangyiisyangyi/Django-blog
def register(request):
    if request.session.get('is_login', None):
        return redirect('/')
    if request.method == "POST":
        log.debug('--> post')
        register_form = RegisterForm(request.POST)
        # log.info(register_form)
        message = '请检查填写的内容'
        if register_form.is_valid():
            username = register_form.cleaned_data['username']
            password1 = register_form.cleaned_data['password1']
            password2 = register_form.cleaned_data['password2']
            email = register_form.cleaned_data['email']
            sex = register_form.cleaned_data['sex']
            if password1 != password2:
                message = '两次输入的密码不同'
                return render(request, 'register.html', locals())
            else:
                same_username = User.objects.filter(user_name=username)
                if same_username:
                    message = "用户名已存在"
                    return render(request, 'register.html', locals())
                same_mail = User.objects.filter(email=email)
                if same_mail:
                    message = "邮箱已存在"
                    return render(request, 'register.html', locals())
                new_user = User(
                    user_name=username,
                    password=md5_code(password1),  # 使用md5加密
                    email=email,
                    sex=sex)
                new_user.save()
                code = make_confirm_string(new_user)
                send_register_mail(email, code)
                message = "请前往注册邮箱,进行邮件确认"
                return render(request, 'confirm.html', locals())  # 跳到邮件确认页
    register_form = RegisterForm()
    return render(request, 'register.html', locals())
コード例 #8
0
ファイル: views.py プロジェクト: ifyangyiisyangyi/Django-blog
def login(request):
    # 不允许重复登录
    res = request.session.get('is_login')
    log.debug(f'request session  --> {res}')
    if request.session.get('is_login', None):
        return redirect('/')

    if request.method == "POST":
        login_form = UserForm(request.POST)
        message = "请检查填写的内容"
        if login_form.is_valid():
            username = login_form.cleaned_data['username']
            password = login_form.cleaned_data['password']
            try:
                user = User.objects.get(user_name=username)
                if user.has_confirmed == False:
                    message = "用户还未邮件确认"
                    return render(request, 'login.html', locals())
                if user.password == md5_code(password):
                    # 往session字典内写入用户状态和数据
                    request.session['is_login'] = True
                    request.session['user_id'] = user.id
                    request.session['user_name'] = user.user_name
                    log.info(request.session['user_name'])
                    return redirect('/')
                else:
                    message = "密码不正确!"
            except:
                message = "用户不存在!"
        return render(request, 'login.html', locals())
    '''
    这里使用了一个小技巧,Python内置了一个locals()函数,它返回当前所有的本地变量字典,
    我们可以偷懒的将这作为render函数的数据字典参数值,就不用费劲去构造一个形如
    {'message':message, 'login_form':login_form}的字典了。
    这样做的好处当然是大大方便了我们,但是同时也可能往模板传入了一些多余的变量数据,造成数据冗余降低效率
    '''
    login_form = UserForm()
    return render(request, 'login.html', locals())
コード例 #9
0
ファイル: admin_views.py プロジェクト: ant1441/flask-blog
 def __init__(self, session):
     log.debug("Creating User View")
     super(UserAdmin, self).__init__(User, session)
コード例 #10
0
ファイル: admin_views.py プロジェクト: ant1441/flask-blog
 def is_accessible(self):
     log.debug("Checking Authentication")
     return current_user.is_authenticated()
コード例 #11
0
 def __init__(self, session):
     log.debug("Creating User View")
     super(UserAdmin, self).__init__(User, session)
コード例 #12
0
 def is_accessible(self):
     log.debug("Checking Authentication")
     return current_user.is_authenticated()