python - Django: Search Engine -
i trying make search engine of sorts in django, user enters query via form , gets output if query exists in database. here's code:
urls.py:
from django.conf.urls import url django.contrib import admin search import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^', views.form), url(r'^search/', views.data,name='search'), ]
models.py:
from __future__ import unicode_literals abc import abcmeta django.db import models # create models here. class album(models.model): artist = models.charfield(max_length=100) album_title = models.charfield(max_length=100) genre = models.charfield(max_length=100) album_logo = models.charfield(max_length=100) def __str__(self): return self.album_title + "-" + self.artist
views.py:
from django.http import httpresponse,http404 models import album forms import formquery django.shortcuts import render django.template import loader . import * def data(request): if request.method=='post': form=formquery(request.post) data=form.cleaned_data value=data['query'] if form.is_valid(): try: album1 = album.objects.get(artist__contains=value) return render(request,'search/form.html',{'album':album1}) except: raise http404("does not exist.") else: return render(request,'search/form.html')
forms.py:
from django import forms class formquery(forms.form): query=forms.charfield()
form.html:
<form action="{% url 'search' %}" method="post">{% csrf_token %} <fieldset> enter album:<br> <input type="text" name="query" ><br> <input type="submit" value="submit search >>"> </fieldset> </form> {% if album %} <h1>{{ album }}</h1> {% endif %}
however, when type query, see url change ,but page remains same , result(album name) not displayed. new django.
form.is_valid()
must called before accessing cleaned_data
.
Comments
Post a Comment