Jinja模板将变量解析为文字字符串

时间:2016-06-20 02:49:56

标签: python flask jinja2

我有一个问题,Jinja正在处理一个变量,我将它作为文字字符串传递给它,这搞砸了Flask完成的URL路由工作。

app.py - 每个&#34;课程&#34;有指定的网址,如/course/<name>所示。

@app.route("/course/<name>")
@login_required
def course(name):
    collection = mongo.db.courses
    course = collection.find_one({"name": name})
    return render_template("course.html", course=course)

profile.html - 这些&#34;课程&#34;将显示在profile.html页面上,并且应该有href个标记,以便将其引导至相应呈现的course.html页面。

尝试#1 :我尝试将{{ course }}传入name参数,但是当Jinja将其视为一个字符串时,网址被搞砸了。

{% for course in courses %}
  <div class="col-md-4">
    <div class="panel panel-default">
      <div class="panel-body">
        <a href="{{ url_for('course', name='{{ course }} }}">{{ course }}</a>
      </div>
    </div>
   </div>
{% endfor %}

尝试#2 :我尝试设置一个Jinja变量并将其传递给href标记,但这不起作用。

{% for course in courses %}
  <div class="col-md-4">
    <div class="panel panel-default">
      <div class="panel-body">
        {% set url = url_for('course', name="{{ course }}") %}
        <a href="{{ url }}">{{ course }}</a>
      </div>
    </div>
   </div>
{% endfor %}

如何在不让Jinja将href标记视为文字字符串的情况下为每个course变量动态生成新的href标记?

1 个答案:

答案 0 :(得分:2)

$scope.uploadFile = function (file) { console.log("hitting file upload", $scope.selectedBridge); if (file) { debugger; var request = { method: 'POST', url: '/api/Bridge/UploadBridgeImage', data: angular.toJson($scope.selectedBridge.BridgeID), file: file, headers: { 'Content-Type': undefined } }; Upload.upload(request).then(function (response) { }); } } 开始一段Python代码。你在里面做的事情遵循Python行为规则,而不是Jinja的规则。您将[HttpPost] [Route("api/Bridge/UploadBridgeImage")] public IHttpActionResult UploadBridgeImage() { try { var uploadedFiles = HttpContext.Current.Request.Files; for (int i = 0; i < uploadedFiles.Count; i++) { var fileToSave = uploadedFiles[i]; var fileBytes = _iStremHelper.GetBytes(fileToSave.InputStream, fileToSave.ContentLength); var file = BridgeFileEntity(fileBytes, fileToSave, 1); using (_iFileRepository) { _iFileRepository.Save(file); } } return Ok(); } catch (Exception ex) { return InternalServerError(); } } 的值{{传递给{{ course }}。只需使用name作为变量即可。

url_for