【问题标题】:Dynamic hashed link in FlaskFlask 中的动态哈希链接
【发布时间】:2013-03-25 13:45:00
【问题描述】:

好的,所以我在服务器端有这段代码:

@app.route('/physical_graph') 
@login_required 
def physical_graph():
    # Some code
    return generate_graph_view()

如果我们点击圆形图标,我们会得到链接/physical_graph#physical.circular:

<a class="icon" href="/physical_graph#physical.circular">
    <img src="{{url_for('static',filename='images/circular64x64.png')}}" 
         id="circular_icon" width="32" height="32" title="Circular layout"/>
</a>

我的问题是:我如何告诉 Flask 哈希后的字符串是什么?我需要这个,因为注释中的代码取决于这个字符串。我尝试将 app.route 声明为:

@app.route('/physical_graph#<some_string>')

但没有成功 - 它给了我错误 404。

任何想法如何做到这一点?

【问题讨论】:

  • 你不能把#留在客户端,你为什么要使用hash?与查询参数相比?或者更好的是一些 rest sytax /graph/physical.circle
  • 我需要哈希,因为我正在对应用程序进行 ajax 化,所以一旦我单击某个图标 - 就可以异步发送和检索数据。到目前为止它是/graph/physical.circle,但这会加载整个新页面,这就是我需要哈希的原因。那么,用哈希链接是不可能做到这一点的呢?

标签: javascript python flask jinja2


【解决方案1】:

当您将其 ajaxify 时,您需要将 physical.circle 传递给服务器。首先只是评论一下icon:的使用

<!-- notice i change from icon -> graphIcon icon is too general  -->
<!--a stylist would be angry at you for using icon -->
<a class="graphIcon" href="/physical_graph#physical.circular"> .. </a>

您首先有一些选择是将其传递到 data 属性中,这将放置在 javascript 中的某个位置(仅执行一次)。

jQuery("#circular_icon").click(function() {
   $.ajax({
         url:'/physical_graph', 
         data:{
               'graph_type': 'physical_graph.circular'
         },
         'success':function(data){
             //your function goes here. 
         }
   })
} );

@app.route('/physical_graph') 
@login_required 
def physical_graph():
  _type = request.args.get('graph_type')

【讨论】:

  • Tnx,给点小费,但我是初学者,我想问你是否可以告诉我把这段代码放在哪里以及如何在服务器端代码中访问它?
  • 不,当我执行 print _type 时,它给了我“无”。我猜它给了我一个空字符串,所以这段代码不会返回任何东西。我有什么其他想法可以解决这个问题吗? (顺便说一句,您在ajax代码中的括号中有一些错误,我尝试使用固定括号)
  • 没有指定,所以我猜是 'GET'。我应该尝试使用“POST”吗?
猜你喜欢
  • 2012-05-06
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
  • 2019-07-22
  • 2017-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多