django新手...如何吧一个view里面的列表变量传到另外一个view里面去?
具体是这样的:在尝试使用django开发一个书籍管理系统来熟悉django框架时,遇到了这样一个问题...在views.py中有下列代码:views.pydefquery...
具体是这样的:
在尝试使用django开发一个书籍管理系统来熟悉django框架时,遇到了这样一个问题...
在views.py中有下列代码:
views.py
def query_book_action(request, user_id):
context = {
'user_id': user_id,
}
user = get_object_or_404(Person, pk = user_id)
query_result = query_funs._query_book(user, book_name = request.POST['name'])
# debug:
# the query_result is a list
print 'in query_book action, the query_result is:'
print query_result
return HttpResponseRedirect(reverse('associate:query_book_result', args = (query_result,)))
def query_book_result(request, query_result):
# but here, query_result is a string....How to handle this problem....
print 'in query_book_result, the query result is:'
print query_result
context = {
'query_result': query_result
}
return render(request, 'associate/query_book_result.html', context)
其中urls.py中针对query_book_result的配置如下:
# wait to solve....
# ex: /associate/[Book:.....]/
url(r'^(?P<query_result>\[.*\])/query_book_result/$', views.query_book_result, name='query_book_result'),
其中输出的debug内容如下:
in query_book action, the query_result is:
[<Book: San Guo Yan Yi>, <Book: C Prime Plus>, <Book: Shui Hu Zhuang>]
[15/Aug/2014 11:21:57] "POST /associate/1/query_book_action/ HTTP/1.1" 302 0
in query_book_result, the query result is:
[<Book: San Guo Yan Yi>, <Book: C Prime Plus>, <Book: Shui Hu Zhuang>]
它这里输出没有问题,但是我发现在query_result中,这个query_result实际上是一个字符串...
因为在associate/query_book_result.html中,输出的内容如下所示...
Here are the informations
Name:
[
<
B
o
o
k
:
...
]
就是把整个给纵向输出了....
其中query_book_result.html中的代码如下:
Here are the informations
Name:
{% for book in query_result %}
{{ book }}
{% endfor %}
具体问题重点如下:
我把query_book_action中的query_result是成功传过去了,但是在query_result中得到的query_result却是一个字符串...这样我就没有办法对query_result里面的变量进行操作了...如何才能将query_result完整地传过去?而不是在另一个view里面仅仅得到一个字符串....
我尝试了一两天都试不出该怎么办...恳请高手们解答..谢谢.... 展开
在尝试使用django开发一个书籍管理系统来熟悉django框架时,遇到了这样一个问题...
在views.py中有下列代码:
views.py
def query_book_action(request, user_id):
context = {
'user_id': user_id,
}
user = get_object_or_404(Person, pk = user_id)
query_result = query_funs._query_book(user, book_name = request.POST['name'])
# debug:
# the query_result is a list
print 'in query_book action, the query_result is:'
print query_result
return HttpResponseRedirect(reverse('associate:query_book_result', args = (query_result,)))
def query_book_result(request, query_result):
# but here, query_result is a string....How to handle this problem....
print 'in query_book_result, the query result is:'
print query_result
context = {
'query_result': query_result
}
return render(request, 'associate/query_book_result.html', context)
其中urls.py中针对query_book_result的配置如下:
# wait to solve....
# ex: /associate/[Book:.....]/
url(r'^(?P<query_result>\[.*\])/query_book_result/$', views.query_book_result, name='query_book_result'),
其中输出的debug内容如下:
in query_book action, the query_result is:
[<Book: San Guo Yan Yi>, <Book: C Prime Plus>, <Book: Shui Hu Zhuang>]
[15/Aug/2014 11:21:57] "POST /associate/1/query_book_action/ HTTP/1.1" 302 0
in query_book_result, the query result is:
[<Book: San Guo Yan Yi>, <Book: C Prime Plus>, <Book: Shui Hu Zhuang>]
它这里输出没有问题,但是我发现在query_result中,这个query_result实际上是一个字符串...
因为在associate/query_book_result.html中,输出的内容如下所示...
Here are the informations
Name:
[
<
B
o
o
k
:
...
]
就是把整个给纵向输出了....
其中query_book_result.html中的代码如下:
Here are the informations
Name:
{% for book in query_result %}
{{ book }}
{% endfor %}
具体问题重点如下:
我把query_book_action中的query_result是成功传过去了,但是在query_result中得到的query_result却是一个字符串...这样我就没有办法对query_result里面的变量进行操作了...如何才能将query_result完整地传过去?而不是在另一个view里面仅仅得到一个字符串....
我尝试了一两天都试不出该怎么办...恳请高手们解答..谢谢.... 展开
展开全部
我们看这里
url(r'^(?P<query_result>\[.*\])/query_book_result/$', views.query_book_result, name='query_book_result'),
这里是捕获url里的参数,url本身是当做字符串来处理的,那么捕获的进来的参数,无疑一定是字符串
你可以稍作尝试,在query_book_result函数中加一行
if isinstance(query_result,str):query_result='query_result is string here.'
用来验证
这里可以稍微处理一下,把字符串变成列表:
query_result = query_result.replace('[','').replace(']','').split(',')
但是实际上列表里的内容依然是字符串,不是key value的形式,但是单就输出来讲,循环输出是没问题了
更多追问追答
追问
那如果我要传整个对象..有什么办法吗
追答
通过url肯定是带不进去的,可是为什么你的query_book_result不能写成def query_book_result(request, user_id):
然后再调query_book_action return出query_result ,或者把这个函数的内容直接放在query_book_result函数内呢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询