コード例 #1
0
def banner_list(request):
    banners = Banners.objects.all()

    # 将QuerySet类型的数据序列化为json data
    # 指定many=True,可以将多个字段进行序列化
    serializer = BannerSerializer(banners, many=True)
    return restful.httpResult(data=serializer.data)
コード例 #2
0
def upload_files(request):
    # 从request.FILES中获取真实的文件,这个字典的每一个输入都是一个UploadFile对象(一个上传后的文件的简单包装)
    files = request.FILES.get('file')
    name = files.name

    # with open函数打开文件的各种方式:(默认的方式)r:以只读的方式打开;
    # w:以打开一个文件只用于写入,如果该文件已经存在,就将其覆盖。如果该文件不存在,创建新文件;
    # a:打开一个文件用于追加,如果文件存在,文件指针将会放在文件的结尾,会将新的内容写入到已有的内容之后。如果该文件不存在,创建新文件进行写入
    # rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头,这是默认的模式。
    # wb:以二进制格式打开一个文件只用于写入。如果文件已经存在将其覆盖。如果该文件不存在,创建新文件。
    # ab: 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容会被写入到已有的内容之后,如果该文件不存在,创建新文件进行写入。
    # r+: 打开一个文件用于读写,文件指针将会放在文件的开头。
    # w+: 打开一个文件用于读写。如果该文件已存在,则将其覆盖。如果不存在,将创建新文件。
    # a+: 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
    # rb+: 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
    # wb+: 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    # ab+: 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件用于读写。

    with open(os.path.join(settings.MEDIA_ROOT, name), 'wb') as fp:
        # UploadFile.read(): 从文件中读取整个上传的数据。如果文件很大,你把它读到内存中就会使系统速度减慢,
        # UploadFile.chunks(): 如果上传的文件足够大需要分块就返回真。默认这个值为2.5M, 这个值是可以调节的。
        for chunk in files.chunks():
            fp.write(chunk)
        fp.close()
    url = request.build_absolute_uri(settings.MEDIA_URL + name)
    return restful.httpResult(data={'url': url})
コード例 #3
0
ファイル: views.py プロジェクト: 1924zjy0835/Ant
def news_list(request):
    """
    通过p参数来指定要获取第几页的数据,p参数是通过查询字符串的方式传递过来的
    切片操作之后得到的是QuerySet对象,通过values()获取
    newses = News.objects.order_by('-pub_time')[start: end].values()
    for news in newses:
        print(news)
    return restful.ok()
    """
    # return HttpResponse('Success!')

    # 定义page变量,在url中通过p参数显示,并且默认值为1
    page = int(request.GET.get('p', 1))
    # 在models.py文件中已经指定了排序方式按照pub_time
    # 分类为0,代表不进行任何分类,直接按照时间倒序排序
    category_id = int(request.GET.get('category_id', 0))

    start = (page - 1) * settings.ONE_PAGE_NEWS_COUNT
    end = start + settings.ONE_PAGE_NEWS_COUNT

    # 如果分类为0,就将所有的新闻取出来,并且按页显示
    if category_id == 0:
        # 将我们需要序列化的数据传输我们定义的序列化的类中,并且指定many=True,代表有很多的数据需要序列化
        # 查询出来的结果为一个QuerySet对象,在进行序列化的时候要指定many=True
        newses = News.objects.select_related('category',
                                             'author').all()[start:end]
    # 如果分类不为0,就按照分类id将其选择出来,分页显示
    else:
        newses = News.objects.select_related(
            'category', 'author').filter(category_id=category_id)[start:end]
    serializers = NewsSerializer(newses, many=True)
    data = serializers.data
    return restful.httpResult(data=data)
コード例 #4
0
def banner_add(request):
    form = BannerForm(request.POST)
    if form.is_valid():
        img_url = form.cleaned_data.get('img_url')
        link_to = form.cleaned_data.get('link_to')
        priority = form.cleaned_data.get('priority')

        prioExist = Banners.objects.filter(priority=priority).exists()
        if not prioExist:
            banner = Banners.objects.create(img_url=img_url,
                                            link_to=link_to,
                                            priority=priority)
            return restful.httpResult(message="轮播图信息已经添加成功了!~~~",
                                      data={'banner_id': banner.pk})
        else:
            return restful.httpResult(message="您添加的轮播图优先级已经存在了~~~")
    else:
        return restful.params_error(message=form.get_errors())
コード例 #5
0
def qnTaken(request):
    access_key = settings.QINIU_ACCESS_KEY
    secret_key = settings.QINIU_SECRET_KEY

    bucket = 'cdant'
    qn = qiniu.Auth(access_key, secret_key)

    token = qn.upload_token(bucket)

    return restful.httpResult(data={'token': token})
コード例 #6
0
def banner_edit(request):
    form = EditBannerForm(request.POST)
    if form.is_valid():
        pk = form.cleaned_data.get('pk')
        img_url = form.cleaned_data.get('img_url')
        link_to = form.cleaned_data.get('link_to')
        priority = form.cleaned_data.get('priority')
        Banners.objects.filter(pk=pk).update(img_url=img_url,
                                             link_to=link_to,
                                             priority=priority)
        return restful.httpResult(message="轮播图信息已经修改成功了!~~~")
    else:
        return restful.params_error(message=form.get_errors())
コード例 #7
0
ファイル: views.py プロジェクト: 1924zjy0835/Ant
def publish_comment(request):
    form = CommentForm(request.POST)
    if form.is_valid():
        news_id = form.cleaned_data.get('news_id')
        content = form.cleaned_data.get('content')
        # 判断是否能够从数据库表中找到news_id的一条数据,如果不可以找到的话,就返回404页面
        news = News.objects.get(pk=news_id)
        # comment是一个对象
        comments = Comment.objects.create(content=content,
                                          news=news,
                                          author=request.user)
        serizlizeData = CommentSerializer(comments)
        return restful.httpResult(data=serizlizeData.data)
    else:
        return restful.params_error(message=form.get_errors())
コード例 #8
0
def banner_del(request):
    banner_id = request.POST.get('banner_id')
    Banners.objects.filter(pk=banner_id).delete()
    return restful.httpResult(message="你要删除的轮播图,已经删除成功!~~ ^_^")