找遍了周圍,發現大部分都指向一個由朱利安Phalip創建一個搜索:http://julienphalip.com/post/2825034077/adding-search-to-a-django-site-in-a-snap如何在Django中爲一列mysql數據創建一個非常簡單的搜索視圖?
而且答案似乎是在這裏:Very simple user input in django
但是我很新的Django和希望創建一個視圖,讓我真正理解正在發生的事情,所以我一直在用Rango教程瀏覽官方的Django和Tango,但是我沒有看到我想要了解的簡單表單搜索的簡單例子。我擁有的主要問題是爲什麼在示例中使用POST而不是GET?我認爲POST被用來在mysql中「創建」數據條目,而GET則用於查找/搜索數據條目?我是否錯過了使用一個和另一個的根本?
我有以下簡單的例子,從我的應用程序:
models.py
class hardware(models.Model):
text = models.CharField(max_length=200, unique=TRUE)
pub_date = models.DateTimeField(default=timezone.now)
def __unicode__(self):
return self.text
class Barcode(models.Model):
hardware = models.ForeignKey(Hardware)
text = models.CharField(max_length=50)
pub_date = models.DateTimeField(default=timezone.now)
def __unicode__(self):
return self.text
forms.py
class HardwareForm(forms.modelForm):
class Meta:
model = Hardware
fields = ['text'}
views.py
def hardware_search(request):
if request.method == 'POST':
search_id = request.POST.get('textfield', None)
try:
hardwarename = Hardware.objects.get(text = search_id)
html = ("<H1>%s</H1>", hardwarename)
return HttpResponse(html)
except Hardware.DoesNotExist:
return HttpResponse("no such hardware found")
else:
return render(request, 'search.html')
搜索。 html
<form method="POST" action="/hardware_search.html">
{% csrf_token %}
<input type="text" name="textfield">
<button type="submit">Upload text</button>
</form>
我的問題是這是最簡單的方式來請求用戶輸入來搜索並生成搜索結果嗎?爲什麼使用POST?我插入這段代碼,它似乎工作,但我不明白爲什麼。
其次,我如何顯示asskociated外鍵類以及主類「硬件」搜索結果? ForeignKey協會是否也提供了顯示該數據的捷徑?
謝謝!
感謝Alex現在對我有意義。由於我目前的數據並不敏感,因此我可能會公開該信息,但可能必須最終切換,因爲我打算稍後進行一些驗證。 – 2014-12-09 01:09:50