Как я могу перенаправить URL с дружественным, когда пользователь заполняет форму в Django - PullRequest
0 голосов
/ 07 декабря 2011

Я использую форму в шаблоне и хочу перенаправить дружественный URL, когда пользователь заполняет форму. Я ищу много вопросов в stackoverflow, я думаю, что моя проблема похожа на эту проблему: Перенаправление формы Django , ноне могу понять тег шаблона, поэтому я не могу решить свою проблему.

Я пишу форму:

<form  method="GET" action="/stock/search">
  search:<input class="search" name="search" type="text" value="" id="serach" >
  <input type="submit" value="Go"/>
</form>

и пишу URL:

url(r'^(?P<number>\w+)/$', 'stock.views.stocknumber'),
url(r'^search/$', 'stock.views.search'),

и просмотры:

def stocknumber(request, number):
    """
    stock info
    """
    stock = Stock.objects.filter(number="%s"%number)
    stock_number = Stock.objects.filter(number="%s"%number)
    stock_reportinfo = Reportinfo.objects.filter(number="%s"%number)
    stock_blockinfo = Blockinfo.objects.filter(number="%s"%number)
    stock_stockinfo = Stockinfo.objects.filter(number="%s"%number)
    data = Stockhq.objects.filter(number="%s"%number).values('timeStamps','openData','highData','lowData', 'closeData', 'volData').reverse()
    datalist=[ ]
    for item in data:
        d =[item['timeStamps'].toordinal(),item['openData'],item['highData'],item['lowData'],item['closeData'],item['volData']]       
        datalist.append(d)

    hisdata = datalist

    return render_to_response(
        'stock/stock.html', 
        {"stock_number": stock_number,
         "stock_reportinfo": stock_reportinfo,
         "stock_blockinfo": stock_blockinfo,
         "stock_stockinfo": stock_stockinfo,
         "hisdata":simplejson.dumps(hisdata) ,
        }, 
        context_instance=RequestContext(request))

def search(request):
        return HttpResponseRedirect('/stock/%s/'%request.GET['search'])

и теперь я надеюсь, что пользователь введет номер акции и перенаправит на дружественный URL-адрес, например: http: //..../stock/YHOOи этот URL-адрес - получить информацию об акциях для отображения шаблона. Правильна ли эта идея?

Если да, то какой код правильный?

1 Ответ

0 голосов
/ 07 декабря 2011

Я не думаю, что этот вопрос действительно похож на ваш вопрос, если я правильно понимаю. Поскольку это уже предопределяет действие формы, перенаправленный URL, похоже, не зависит от пользовательского ввода. Так что я не совсем уверен, какой у вас вопрос.

Реализуете ли вы простой поиск, когда пользователь вводит номер акции (я предполагаю, что вы рассматриваете «YHOO» как число? Является ли ввод «число» чем-то вроде «YHOO» или это действительно число?) , акция с номером (то есть акция "YHOO") отображается со всей информацией на новой странице с URL "http: //.../stock/YHOO"?

В любом случае, вот некоторые наблюдения.

stock = Stock.objects.filter(number="%s"%number)
stock_number = Stock.objects.filter(number="%s"%number)

Есть ли причина, по которой у вас есть оба, когда вы не используете первый? Кроме того, уникальны ли числа? Если это так, вы можете просто сделать Stock.objects.get (число = число), потому что:

  1. Вы бы использовали "get" вместо "filter", потому что вы ожидаете одна запись, чтобы соответствовать этому.
  2. Номер уже является строкой, когда передан, поэтому вам не нужно вводить "% s"% число.

Вы также можете попробовать следующее вместо использования фактического URL, чтобы сделать его более похожим на Django.

from django.core.urlresolvers import reverse
...
def search(request):
    number = request.GET['search']
    return HttpResponseRedirect(reverse('stock.views.stocknumber', args=(number,)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...