Dimon Kudimon
Dimon Kudimon

Reputation: 53

Data from form. Template does not exist

I need get data from my form and handle them.

my form

from django import forms


class DomainForm(forms.Form):
    url_text = forms.URLField(label='Site url', max_length=200)

my template

    <form class='form-horizontal' action="" method="post">
        {% csrf_token %}
        {{ form }}
        <input type="submit" value="Submit" />
    </form>

my view

def parsurl(request):
    global form

    if request.method == 'POST':
        form = DomainForm(request.POST)

        if form.is_valid():
            r = form.cleaned_data.get('url_text')
            masall =parser_d(r)
            for mas1 in masall:
                try:
                    Events.objects.create(events_title=mas1[1], events_text = mas1[2],events_img = mas1[0], events_is_pars=1, events_seourl = "132")
                except:
                    print ("lololo")

    else:
        form = DomainForm()
    context = { 'form': form, }
    return render_to_response(request, 'form.html', context)

my url

url(r'^parser/', 'pages.views.parsurl'),

If I visit mysite/parser/ I get an error:

Template-loader postmortem

Django tried loading these templates, in this order:

Using engine :
django.template.loaders.filesystem.Loader: /home/ziberon/econom/ecosite/templates/<WSGIRequest: GET '/parser/'> (Source does not exist)
django.template.loaders.app_directories.Loader: /home/ziberon/econom/ecenv/lib/python3.4/site-packages/django/contrib/admin/templates/<WSGIRequest: GET '/parser/'> (Source does not exist)
django.template.loaders.app_directories.Loader: /home/ziberon/econom/ecenv/lib/python3.4/site-packages/django/contrib/auth/templates/<WSGIRequest: GET '/parser/'> (Source does not exist)

Upvotes: 0

Views: 1433

Answers (2)

Ashfaque Ali Solangi
Ashfaque Ali Solangi

Reputation: 1891

Can do like this (assuming you have template in directory './template/form.html'

from django.shortcuts import render
import os
def parsurl(request):
    return render(request, os.path.join('./templates/','form.html'), context)

Upvotes: 0

Alasdair
Alasdair

Reputation: 308839

You are getting the error because you are calling render_to_response incorrectly.

return render_to_response(request, 'form.html', context)

The render_to_response method is no longer recommended. The best idea is to use the render shortcut instead.

from django.shortcuts import render

def parsurl(request):
    ...
    return render(request, 'form.html', context)

Upvotes: 2

Related Questions