Django前端的文本编辑器,滑动登陆

文本编译器

 # 添加文章
    url(r‘^addarticle/$‘, views.addarticle),
# 利用文本编辑器添加文章
def addarticle(request):
    ‘‘‘
    添加文章
    :param request:
    :return:
    ‘‘‘
    if request.method == ‘POST‘:
        article_form=ArticleForm(request.POST)
        if article_form.is_valid():
            title = article_form.cleaned_data.get("title")
            content = article_form.cleaned_data.get("content")
            img = article_form.cleaned_data.get("content")
            article_obj = models.Article.objects.create(title=title, desc=content,create_time=datetime.datetime.now(),img=img,user_id=1)
            if article_obj:
                return  HttpResponse(‘okokokokokok‘)
        else:
            pass
    article_form=ArticleForm()
    return render(request, ‘addarticle.html‘,{‘article_form‘:article_form})
# 添加文章图片预览
def uploadfile(request):
    file_obj = request.FILES.get(‘imgFile‘)
    file_name = file_obj.name
    from LoginEdit import settings
    import os
    path=os.path.join(settings.BASE_DIR,‘app01‘,‘media‘,file_name)
    with open(path,‘wb‘) as f:
        for i in file_obj:
            f.write(i)
            # 根据定值的大小上传
        # for i in file_obj.chunks():
        #     f.write(i)
    response={
        # 标识成功与否的状态,上传
        ‘error‘:0,
        # 预览,src的路径就是下面的url
        ‘url‘:‘/media/‘+file_name+‘/‘
    }
    import json
    return HttpResponse(json.dumps(response))
html<script>
    KindEditor.ready(function (K) {
        window.editor = K.create(‘#id_content‘, {
            width: ‘600px‘,
            height: ‘500px‘,
            items: [
                ‘source‘, ‘|‘, ‘undo‘, ‘redo‘, ‘|‘, ‘preview‘, ‘print‘, ‘template‘, ‘code‘, ‘cut‘, ‘copy‘, ‘paste‘,
                ‘plainpaste‘, ‘wordpaste‘, ‘|‘, ‘justifyleft‘, ‘justifycenter‘, ‘justifyright‘,
                ‘justifyfull‘, ‘insertorderedlist‘, ‘insertunorderedlist‘, ‘indent‘, ‘outdent‘, ‘subscript‘,
                ‘superscript‘, ‘clearhtml‘, ‘quickformat‘, ‘selectall‘, ‘|‘, ‘fullscreen‘, ‘/‘,
                ‘formatblock‘, ‘fontname‘, ‘fontsize‘, ‘|‘, ‘forecolor‘, ‘hilitecolor‘, ‘bold‘,
                ‘italic‘, ‘underline‘, ‘strikethrough‘, ‘lineheight‘, ‘removeformat‘, ‘|‘, ‘image‘, ‘multiimage‘,
                ‘flash‘, ‘media‘, ‘insertfile‘, ‘table‘, ‘hr‘, ‘emoticons‘, ‘baidumap‘, ‘pagebreak‘,
                ‘anchor‘, ‘link‘, ‘unlink‘, ‘|‘, ‘about‘
            ],
            {#            不能拖动0左右都不能拖拉,1左右不能,2都能#}
            resizeType: 2,
            {#            上传文件,文件的url地址#}
            uploadJson: ‘/uploadfile/‘,
            {#            因为传的是数据需要加入cstftoken#}
            extraFileUploadParams: {
                csrfmiddlewaretoken: $("[name=‘csrfmiddlewaretoken‘]").val()
            }
        });
    });
</script>

详情见:

http://kindeditor.net/doc.php

滑动验证

url(r‘^login/‘, views.pcajax_validate),

# 滑动
url(r‘^pcgeetest/register‘,views.pcgetcaptcha,name=‘pcgetcaptcha‘),

url(r‘^pcgeetest/ajax_validate‘,views.pcajax_validate,name=‘pcajaxvalidate‘),
# huadong
from app01.geetest import GeetestLib
import json

pc_geetest_id = "b46d1900d0a894591916ea94ea91bd2c"
pc_geetest_key = "36fc3fe98530eea08dfc6ce76e3d24c4"
mobile_geetest_id = "7c25da6fe21944cfe507d2f9876775a9"
mobile_geetest_key = "f5883f4ee3bd4fa8caec67941de1b903"

def pcgetcaptcha(request):
    user_id = ‘test‘
    gt = GeetestLib(pc_geetest_id, pc_geetest_key)
    status = gt.pre_process(user_id)
    request.session[gt.GT_STATUS_SESSION_KEY] = status
    request.session["user_id"] = user_id
    response_str = gt.get_response_str()
    return HttpResponse(response_str)

def pcajax_validate(request):    # 登陆也是这里,但是名字无法改
    if request.method == "POST":
        loginResponse = {‘is_login‘:False,‘error_msg‘:None}
        # 验证码
        gt = GeetestLib(pc_geetest_id, pc_geetest_key)
        challenge = request.POST.get(gt.FN_CHALLENGE, ‘‘)
        validate = request.POST.get(gt.FN_VALIDATE, ‘‘)
        seccode = request.POST.get(gt.FN_SECCODE, ‘‘)
        status = request.session[gt.GT_STATUS_SESSION_KEY]
        user_id = request.session["user_id"]
        if status:
            result = gt.success_validate(challenge, validate, seccode, user_id)
        else:
            result = gt.failback_validate(challenge, validate, seccode)
        if result:
            user = request.POST.get(‘username‘)
            pwd = request.POST.get(‘password‘)
            valid_code = request.POST.get(‘valid_code‘)

            valid_code_str = request.session.get(‘valid_code_str‘)

            if valid_code_str.upper() == valid_code.upper():  # 不区分大小写
                # from django.contrib import auth
                print(user, pwd)
                # userobj = auth.authenticate(username=user,password=pwd)
                userobj = models.UserInfo.objects.filter(username=user, password=pwd).first()  # 通过auth模块验证 对象

                if userobj:
                    # auth.login(request,userobj) # 设置SESSIO,保存的是一条记录对象
                    request.session[‘user‘] = userobj.username
                    loginResponse[‘user‘] = userobj.username

                    print(‘======_____++++++++‘, userobj.username)
                else:
                    loginResponse[‘error_msg‘] = ‘username or password error‘
            else:
                loginResponse[‘error_msg‘] = ‘valid code error‘

        else:
            loginResponse[‘error_msg‘] = ‘yanzhengma error‘

        return HttpResponse(json.dumps(loginResponse))
    return render(request, "login.html")
<!-- 引入封装了failback的接口--initGeetest -->
    <script src="http://static.geetest.com/static/tools/gt.js"></script>
 {# 方式一,刷新验证码,通过/get_valid_img/后面加入?刷新,不需要试图函数更改#}
    $("#valid_img").click(function () {
        $(this)[0].src += "?"
    });
#  滑动
 var handlerPopup = function (captchaObj) {
        // 成功的回调
        captchaObj.onSuccess(function () {
            var validate = captchaObj.getValidate();
            $.ajax({
                url: "/pc-geetest/ajax_validate", // 进行二次验证
                type: "post",
                dataType: "json",
                data: {
                    username: $(‘#user‘).val(),
                    password: $(‘#pwd‘).val(),
                    csrfmiddlewaretoken:$("[name=‘csrfmiddlewaretoken‘]").val(),
                    valid_code: $(‘#valid_code‘).val(),
                    geetest_challenge: validate.geetest_challenge,
                    geetest_validate: validate.geetest_validate,
                    geetest_seccode: validate.geetest_seccode
                },
                success: function (data) {
                    console.log(‘sss‘);
                    if (data.user) {
                        console.log(‘dddddd‘);

                        if ($.cookie(‘next_path‘)) {
                            location.href = $.cookie(‘next_path‘)
                        }
                        else {
                            location.href = ‘/‘
                        }
                    }
                    else {
                        $(".error").html(data.error_msg).css("color", "red");
{#                        setTimeout(function () {#}
{#                            $(".error").text("")#}
{#                        },1000)#}
                    }
                }
            });
        });
        $("#loginbtn").click(function () {
            captchaObj.show();
            console.log(‘11111‘)
        });
        // 将验证码加到id为captcha的元素里
        captchaObj.appendTo("#popup-captcha");
        // 更多接口参考:http://www.geetest.com/install/sections/idx-client-sdk.html
    };
    // 验证开始需要向网站主后台获取id,challenge,success(是否启用failback)
    $.ajax({
        url: "/pc-geetest/register?t=" + (new Date()).getTime(), // 加随机数防止缓存
        type: "get",
        dataType: "json",
        success: function (data) {
            // 使用initGeetest接口
            // 参数1:配置参数
            // 参数2:回调,回调的第一个参数验证码对象,之后可以使用它做appendTo之类的事件
            initGeetest({
                gt: data.gt,
                challenge: data.challenge,
                product: "popup", // 产品形式,包括:float,embed,popup。注意只对PC版验证码有效
                offline: !data.success // 表示用户后台检测极验服务器是否宕机,一般不需要关注
                // 更多配置参数请参见:http://www.geetest.com/install/sections/idx-client-sdk.html#config
            }, handlerPopup);
        }
    });

</script>

原文地址:https://www.cnblogs.com/jokerbj/p/8343211.html

时间: 2024-08-15 03:04:14

Django前端的文本编辑器,滑动登陆的相关文章

Django使用富文本编辑器

1.下载kindeditor 网址:http://kindeditor.net/demo.php2.解压到项目中 地址:\static\js\kindeditor-4.1.103.删除没用的文件 例如:example,php,asp等4.在需要使用富文本编辑器的model中定义meta类: class Media: js = ( '/static/js/kindeditor-4.1.10/kindeditor-min.js', '/static/js/kindeditor-4.1.10/lang

django通过富文本编辑器发帖

在发帖的页面经常会编辑一些图片.字体.多媒体等,手动编辑这么内容比较麻烦,这样就会用到html在线编辑器 这里介绍下CKEditor和UEditor CKEditor 首先下载CKEditor的full版本 通过CKEditor的在线帮助文档来使用CKEditor http://docs.ckeditor.com/#!/guide/dev_installation 将ckeditor_4.7.1_full.zip解压缩好后放到django中的静态目录中,然后在发帖的页面中导入上图中的js和添加<

BBS(仿博客园系统)项目05(后台管理功能实现:文章添加、富文本编辑器使用、xss攻击、BeautifulSoup4模块、富文本编辑器上传图片、修改头像)

摘要 布局框架搭建 随笔添加 后台管理富文本编辑器KindEditor xss攻击 文章简介的截取,BeautifulSoup4模块 富文本编辑器上传图片 头像修改 一.后台管理框架布局搭建 后台管理布局框架分析:导航条.左侧功能区.右侧主要功能显示和实现区 实现: 导航条:使用bootstrap模板:JavaScript>>导航条 左侧:使用bootstrap模板:组件>>列表组 右侧:使用bootstrap模板:JavaScript>>标签页 新建后台管理路由(注意

Django集成百度富文本编辑器uEditor

UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码. 首先从ueEditor官网下载最新版本的包,目前官网上提供了ASP..NET.PHP.JSP版本的,django版本只有一个第三方个人开发的,但看上出配置起来稍微复杂一点. 这里不介绍uEditor的使用方法,也不过多解释uEditor的配置方法,官网上都有详细的文档和API介绍,下载的Demo中也有常用的方法的示例代码,这里主要介绍uEdi

django之百度Ueditor富文本编辑器后台集成

Python3 + Django2.0 百度Ueditor 富文本编辑器的集成 百度富文本编辑器官网地址:http://fex.baidu.com/ueditor/ 疑问:为什么要二次集成? 答案:因为百度富文本编辑器Ueditor没有对python的支持 步骤1: 在官网下载Ueditor的任意版本代码:http://ueditor.baidu.com/website/download.html#ueditor 步骤2: 将下载的代码放入到 django 项目中 步骤3:前端引用 在前端HTM

Django 程序中添加js插件文本编辑器

第一步:在首页中添加写博客的按钮     <li>         <a href="{% url 'create_article' %}">写博客</a>     </li> 第二步:写相应的创建博客视图,编辑views.py文件 def create_article(request):     if request.method == "GET" :         return  render(request,'

在Django项目中使用富文本编辑器

1 开发要点 现在网上有很多的富文本编辑器,包括Markdown.tinymce.UEditor.KindEditor.ckeditor等等.在项目中使用这些编辑器主要有以下几个问题: 编辑页面 在HTML页面渲染编辑器: 定制编辑器的功能,比如有哪些文本样式.图片上传.代码插入: 定制编辑器的样式,指的是编辑器整体的样式,比如高度.宽度.显示位置等等: 预览内容: 获取内容: 显示页面 显示内容: 2 Django APP 下表列出一些常用的APP,它们都可以在GitHub上找的到,链接见下文

Django中使用富文本编辑器Uedit

Uedit是百度一款非常好用的富文本编辑器 一.安装及基本配置 官方GitHub(有详细的安装使用教程):https://github.com/zhangfisher/DjangoUeditor 1. settings.py INSTALLED_APPS = [ ... 'DjangoUeditor', ... ] 2. 配置urls from django.conf.urls import url, include urlpatterns = [ # 富文本相关url url(r'^uedit

django下的ckeditor 5.0 文本编辑器上传功能。

完整的后台界面怎么可以没有文本编辑器,但是django的admin界面很疑惑,没有自带文本编辑器,好在网上有不少成型的库可以用 我用的是ckeditor编辑器,安装和配置我引用别人的博客 这篇博客配置讲的很详细,之后就可以用RichTextField来定义模型,后台默认就是文本编辑器. 但是问题来了,文本编辑器是没有上传图片的功能,只能贴链接. 网上以前有两篇博客也是讲上传的,一篇是java web,一篇是django的 django的链接在这里 django下ckeditor上传图片的实现 j