我用Python编写了一些代码,该代码读取两个字符串,删除标点符号,然后在矩阵表中比较它们中的单词,并将其打印到控制台。
我如何转换要在Django框架内使用的代码。我想在网上显示类似的矩阵。我已经将其导入视图。请有人指出我正确的方向吗?我一直在使用django project和lynda进行学习,
编辑:
Merci帮忙的人。设法使其显示在网页上。但它会将所有内容打印为单个字符串。我该如何设计更好的风格?
答案 0 :(得分:2)
将数据传递到“ Django网页”就像从Django视图中将值的字典传递到Django模板一样。
什么是Django模板? Django模板是Django的“ MTV”设计模式中的“ T”。在常规的MVC设计模式(模型-视图-控制器)中,视图是您显示事物的地方。在Django中,模板是您显示内容的地方。奇怪的是,Django中的“视图”实际上是控制器。这花了我一段时间来缠住我的头。
我们为什么要使用类似字典的上下文? 通过将键映射到值,我们可以在Django模板中实现超快速的[O(1)/ constant]查找。
考虑到所有这些,我建议使用“ TemplateView”通用视图,在utils文件中进行工作,将utils导入视图,然后通过上下文字典将数据传递到模板。所以看起来像这样:
import string
import pandas as pd
pd.set_option('display.max_columns', None)
def generate_out_matrix():
with open('./arrayattempts/samp.txt', 'r') as file1:
sampInput=file1.read().replace('\n', '')
#print(sampInput)
with open('./arrayattempts/ref.txt', 'r') as file2:
refInput=file2.read().replace('\n', '')
#print(refInput)
sampArray = [word.strip(string.punctuation) for word in sampInput.split()]
refArray = [word.strip(string.punctuation) for word in refInput.split()]
out=pd.DataFrame(index=refArray,columns=sampArray)
for i in range(0, out.shape[0]):
for word in sampArray:
out.ix[i,str(word)] = out.index[i].count(str(word))
return out.as_matrix()
from appname.local_utils import generate_out_matrix
class Detail(TemplateView):
template_name = 'appname/yourhtml.html'
# Will render on each call to URL for 'Detail'
def get_context_data(self):
out = generate_out_matrix()
context['out'] = out
return context
{% if out %}
{% for row in out_matrix %}
{% for o in row %}
{{ o }}
{% endfor %}
<br>
{% endfor %}
{% endif %}
path('/your_path', views.Detail.as_view()),
https://docs.djangoproject.com/en/2.0/ref/templates/api/#rendering-a-context
答案 1 :(得分:1)
要将数据发送到模板,您应该在视图中将变量添加到上下文中
from django.http import Http404
from django.shortcuts import render
from polls.models import Poll
def detail(request, poll_id):
... // your logic
out // your variable
return render(request, 'yourhtml.html', {'out': out})
在html中会是这样
{{ out }}
{% for o in out %}
{{ o }}
{% endfor %}
https://docs.djangoproject.com/en/2.0/topics/http/views/
您可以使用一些CSS样式化表格或使用ny lib结构来处理表格
您可以遵循本指南