首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
V2EX  ›  Python

Django 模板 url 如何构造请求参数

  •  
  •   ltoddy · 245 天前 · 1820 次点击
    这是一个创建于 245 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假如在 urls.py 中有一个视图函数: path("/index", view.index, name="index")

    在 Django 模板那边可以用 {% url "index" %} 把这个 url (/path/index )生成。

    我想问一下,假设我想生成的 url 附加 GIT 请求参数,例如: /path/index?foo=bar, 那我 Django 模板那边的 url 该怎么写?

    21 回复  |  直到 2018-11-16 11:04:53 +08:00
        1
    iiduce   245 天前
    这个是最基本的,看一下官方文档。
        2
    chengxiao   245 天前
    {% url "index" %}/?foo=bar ,不过记得官方并不推荐这种写法 ,"/path/index/foo/bar/",一般是这样写
        3
    hzwjz   245 天前 via Android
    不用生成的,想获取 foo 的值,可以这样子 request.Get.get('foo')。
        4
    ltoddy   245 天前
    @iiduce 文档里要是有,我还问这个问题干嘛.
        5
    ltoddy   245 天前
    @hzwjz 你看清楚我问的呀, 我问的是 django 模板那边怎么构造请求参数, 不是视图函数那边怎么取到请求参数.
        6
    ltoddy   245 天前
    @chengxiao 对,我现在就是用这个方案解决的, 这个方案太 ugly 了.
        7
    rockdodos   245 天前
    url.py:path("/index/<str:foo>", view.index, name="index")
    templates:{% url "index" bar %}
        8
    wonderay   245 天前
    {% url 'some-url-name' arg1=v1 arg2=v2 %}

    官方文档里没有么???还是你根本不看
    https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#url

    google 一下也很快会得到答案
    https://stackoverflow.com/questions/25345392/how-to-add-url-parameters-to-django-template-url-tag
    还那么理直气壮的怼回复的人
        9
    ltoddy   245 天前 via Android
    @wonderay 我试过了,不行的,模板那边报错的。
        10
    ltoddy   245 天前 via Android
    @wonderay 我要的是 url 的请求参数,又不是动态路由的参数。
        11
    hellojay   245 天前
    文档没有就去看源代码。
        12
    tzhhahaha   245 天前
    http://www.liujiangblog.com/course/django/
    给楼主提供一个链接。。。
        13
    iiduce   245 天前
    你怼一下,我又看了一遍问题,结合下面你的回复,才理解你的意思。恕我愚钝,抱歉了。

    我现在理解是,你想在模板中生成一个 url,这个 url 附带当前页面的 get 动态参数。

    1、urls.py 文件中应该不能直接实现。

    2、#3 的方法可以。能用就好,优雅其次。

    3、我平时用的方法,在当前页面的 view 中 request.get 参数,放到模板变量{get_param}中,在模板里{% url "index" %}/?foo={get_param}。相比之下,优雅些?好处在于,方便在 view 中对 get 到的 param 做一些逻辑判断和处理。
        14
    ltoddy   244 天前
    @tzhhahaha 竟然学框架有看教程而不是文档的?......
        15
    ltoddy   244 天前
    @iiduce 我这个是 django 版本是 2.1.3(最新的), 我在考虑把 urls.py 中用 path 注册的视图函数换成 re_path 然后在 url 通过参数方式传递. (尝试).
        16
    iiduce   244 天前
    @ltoddy 我对 django 的认知还停留在 1.* 版本
        17
    xpresslink   244 天前
    楼主这个问题简直无离头啊?
    在模板里直接这么写不就行了么?
    <a href=" {% url "index" %}?foo=bar">
        18
    ltoddy   244 天前 via Android
    @xpresslink 你不觉得很 ugly 吗。
        19
    xpresslink   244 天前
    补充一下,这样生成的 url 是 /path/index/?foo=bar 要多一个 /
    但是工作是正常的。
        20
    ltoddy   244 天前 via Android
    @xpresslink ok,我下午试试
        21
    xpresslink   244 天前
    @ltoddy 你这话无离头啊? url 参数就这得性。
    你要嫌 urgly 本身就不应当用这个方式。
    Django 本身有优雅的方式你不用啊
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3800 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 30ms · UTC 01:30 · PVG 09:30 · LAX 18:30 · JFK 21:30
    ♥ Do have faith in what you're doing.