我正试图通过urldispatcher从index.html发送QuerySet到视图。我搜索了文档,但大多数都有关于int:id, path: jf等的信息。有一些关键字参数的信息,但我不太了解他们。我是初学者Django,这是我的第一个项目,也是我的这个项目的最后期限是接近,所以任何帮助将是值得赞赏的。
index . html
只列出必要的代码…
{% if datadict and datadict != "Sorry no data found" %}
{% for item in datadict %}
<tr>
<th width="5%" scope="row"><a href="{% url 'index' datadict %}" class="btn btn-secondary">Generate</a></th>
<td>{{ item.title }}<td>
</tr>
{% endfor %}
{% endif %}
urls . py
urlpatterns = [
path('', views.index, name='index'),
path('<datadict>', views.index, name='index')
]
views.py
def index(request, datadict=None):
if (datadict):
b = datadict[0] ### this is just testing to see if i am receiving the data in QuerySet from or not
return render(request, 'dapp/index.html', {'b': b})
datadict有这个数据:-
& lt; QuerySet[{"id":1002年,"年":"2000","部门":"测试"、"主题":"test1"、"洞察力":"不不","url":"localhost","开始":"2000","影响":"impaca","说":"2001年1月08","出版":"2001年8月03","相关性":"4","害虫":"test2"、"源":"方式","标题":"添加测试数据","喜欢":"5"}]在
我不确定你想要实现什么,如果我很好地理解了你的问题,你希望能够访问这样的URL:/[{'id': 1002, 'year': '2000.../
,然后获得加载URL中的数据的页面。这可能不是一个好主意,因为queryset不打算放在URL中。这是可能的,但您必须将其转换为字符串,然后解析字符串,如下所示:
urls . py
urlpatterns = [
path('<str:datastr>', views.index, name='index')
]
views.py
import json
def index(request, datastr=None):
if (datastr):
datastr = datastr.replace(''', '"') # This is needed because json.loads expects keys and values to be inside double quotes
datadict = json.loads(datastr)
return render(request, 'dapp/index.html', {'datadict': datadict})
那么你可以使用url/[{'id': 1002, 'year': '2000'…}]/访问该页面
这应该可以工作,但确实不是最优的。如果数据中有引号,它们将被打破,并且所有内容都将是字符串,偶数。
下面是更常见的做法:如果数据实际上存在于django可以访问的数据库中,那么最好在视图中检索它。例如,要通过id获取对象,可以这样做:urls . py
urlpatterns = [
path('<int:id>', views.index, name='index')
]
views.py
def index(request, id=None):
data = None
if id:
# Get data here.
# For example: data = models.ModelName.objects.get(id=id)
return render(request, 'dapp/index.html', {'datadict': data})
或者,如果您确实希望客户端发送因此,最好使用GET参数或使用POST请求。