在 Django 中从视图到 url 获取字符串变量 希望这有助于为您寻找正确的方向

如何解决在 Django 中从视图到 url 获取字符串变量 希望这有助于为您寻找正确的方向

我是 Python 和 Django 的初学者,我正在尝试解决一个问题,当用户搜索搜索是否有效时,我想在我的 URL 中获取搜索 = var_X,例如:>

www.website.com/search/var_X

或类似的东西,

www.website.com/search/<df.item>

视图.py

def views_search(request):
    temp_dict = {}
    if request.method == 'POST': 
        var_X = request.POST['var_X']
        try:
            df = wsc.Summary(temp_dict,var_X)
        except Exception as e:
            df = "ERROR"
            return render(request,'search.html',{'df' : df})
    else:
        return render(request,'home.html',{'var_X' : "Not Found"})

网址

from django.urls import path
from . import views
from requests import *

urlpatterns = [
   path('search/<var_X>',views.views_search,name="url-search"),]  

HTML

<form action="{% url 'url-search' var_X %}"class="d-flex" method="POST">
    {% csrf_token %}
    <input class="form-control me-2" type="search" placeholder="Enter String" aria-label="Search" name="var_X">
        <button class="btn btn-outline-secondary" type="submit">Search</button>
</form>

解决方法

当 Django 呈现模板时,它会将所有模板标签转换为 html。

您将无法在客户端使用 Python 代码在 var_X 中设置 {% url 'url-search' var_X %} 的值。

我的建议是使用 javascript 通过 onclick html 属性设置表单的操作。

<button ... onclick="this.form.action = {% url 'url-search' %} + document.getElementById('id-of-input-element').value;>"

这也意味着从 input 元素中删除 action 属性。

来自

<form action="{% url 'url-search' var_X %}"class="d-flex" method="POST">

<form class="d-flex" method="POST">

因为我不知道您的代码是做什么的(因为我不知道 df 是什么。使用以下仅作为您可以实现的示例。

(在我的代码片段中,输入搜索会返回到同一页面以显示结果。)

urls.py

urlpatterns = [
   path('search/',views.views_search,name="url-search"),path('search/<str:var_X>',views.views_search)
]  

需要路由 'search/' 才能使 {% url 'url-search' %} 在第一页加载时工作。

路由 'search/<str:var_X>'search/ 之后的任何值作为视图函数中的字符串匹配到名为 var_X 的变量中。

views.py

def views_search(request,var_X=None):
    if request.method == 'POST':
        pass
        # do the stuff you need to do with the form..
    return render(
        request,"views_search.html",{
            'var_X': var_X
        }
    )

参数 var_X 默认为 None,如果 url 在 search/ 之后没有任何内容,否则它将包含搜索字符串。

views_search.html(wtv 你的 html 模板被调用)

<form class="d-flex" method="POST">
    {% csrf_token %}
    <input id="search_input" class="form-control me-2" type="search" placeholder="Enter String" aria-label="Search" name="var_X" value="">
        <button class="btn btn-outline-secondary" type="submit" onclick="this.form.action = {% url 'url-search' %} + document.getElementById('search_input').value;">Search</button>
</form>

{% if var_X %}
    <p>Showing results for '{{ var_X }}'.</p>
{% endif %}

使用上面的 html 你会得到这个输出:

在按下搜索按钮之前

form before

按下搜索按钮后

form after

这样做的另一个好处是,如果您直接在 url 中输入内容,它也会搜索该内容。

希望这有助于为您寻找正确的方向。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?