V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
diangdiang
V2EX  ›  程序员

小白 求助: Django 导入视图函数 值为 None 在线等

  •  
  •   diangdiang · 2019-02-14 14:00:57 +08:00 · 1019 次点击
    这是一个创建于 2143 天前的主题,其中的信息可能已经有所发展或是发生改变。

    发了三次 都被移到水节点 不知道为啥,原贴链接: https://www.v2ex.com/t/534900#reply1 大家将就着看,在线等

    7 条回复    2019-02-14 14:22:38 +08:00
    diangdiang
        1
    diangdiang  
    OP
       2019-02-14 14:03:25 +08:00
    求别沉,卡了好久 在线等大佬
    diangdiang
        2
    diangdiang  
    OP
       2019-02-14 14:07:27 +08:00
    目录结构:

    - project 目录
    + images/views.py
    + manage.py
    - project 目录下: python manage.py shell 导入 views.py 里的两个视图函数,其中函数 image_like 为 None,

    <img src="https://i.loli.net/2019/02/14/5c64faacd9a72.jpg">
    - views.py 里两个函数的相关代码

    @login_required
    def image_create(request):
    if request.method == "POST":
    form = ImageCreateForm(data=request.POST)
    if form.is_valid():
    cd = form.cleaned_data
    new_item = form.save(commit=False)

    # assign current user to the item
    new_item.user = request.user
    new_item.save()
    messages.success(request, "Image added successfully.")

    # redirect to new created item detail view
    return redirect(new_item.get_absolute_url())
    else:
    # build form with data provided by the bookmarked via GET:
    form = ImageCreateForm(data=request.GET)

    return render(request, 'images/image/create.html', {'section': 'images', 'form': form})

    @ajax_required
    @login_required
    @require_POST
    def image_like(request):
    # import pdb
    # pdb.set_trace()
    image_id = request.POST.get('id')
    action = request.POST.get('action')
    if image_id and action:
    try:
    image = Image.objects.get(id=image_id)
    if action == 'like':
    image.users_like.add(request.user)
    else:
    image.users_like.remove(request.user)
    return JsonResponse({"status": "ok"})
    except:
    pass

    return JsonResponse({"status": "ko"})
    freakxx
        3
    freakxx  
       2019-02-14 14:15:52 +08:00
    直接排下看看,

    先把 @ajax_required 注释掉看看
    diangdiang
        4
    diangdiang  
    OP
       2019-02-14 14:17:40 +08:00
    @freakxx 多谢大佬 ~~ 为什么可以了?我怎么没想到 ,想问是什么原理呢
    freakxx
        5
    freakxx  
       2019-02-14 14:18:46 +08:00   ❤️ 1
    @diangdiang

    你这个是自己写的?哪里找的呢?
    修饰器看下是不是没写好,最后返回没返回。
    freakxx
        6
    freakxx  
       2019-02-14 14:21:06 +08:00   ❤️ 1
    @diangdiang

    排错思路如下:

    问题:
    reutrn none

    不报错,不是函数内部问题,
    3 个修饰器,2,3 都是官方出的,只有第 1 个不是,注释掉 1,

    if 没问题,查看修饰器内部是不是写错。
    diangdiang
        7
    diangdiang  
    OP
       2019-02-14 14:22:38 +08:00
    @freakxx 破案了 多谢大佬,ajax 那个装饰写的有问题 🤣
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2424 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 15:41 · PVG 23:41 · LAX 07:41 · JFK 10:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.