renu
renu

Reputation: 39

how to take input from one page and send them into another page in django

I'm fairly new at this. I'm trying to build a report page in iframe according to user requirement user can create report with src, width and height ...and i successfully done this...i am able to create the report now i want this created report name will be show in the dropdown menu and when the user click on report name then user can see the report and the name of the report will add on dynamically in the dropdown.... i'm waiting for response ..here i'm going to share the code what i have done ... i would say one more thing i don't want to add these data (Src,width ,height,name of the report) in the data base ...is that possible to create report and get the same report when i will click on the report name.
index.html

<li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Reports<span class="caret"></span></a>
    <ul class="dropdown-menu">
        <li class="dropdown-header">Reports</li>
        <li>
            <div class="buttons pull-right">
                <a href="{% url 'report:reporttest' %}" class="btn btn-xs btn-success" title="Add"><i class="fa fa-plus"></i></a>
            </div>
            <a href="{% url 'report:reporttwo' %}">Report one</a>
        </li>
        {% for item in report_item %}
        <li>
            <a href="{% url 'report:add' %}">{{item.name}}</a>
        </li>
        {% endfor %}
    </ul>
</li>

reportform.html

<form action = "add" method= "post" enctype="multipart/form-data" class="form form-horizontal">  
    {% csrf_token %}
    <div class="panel panel-default">
        <div class="panel-heading">
            <strong>Add Report</strong>
        </div>
        <div class="panel-body">
            <table class="table table-hover report-body attr-table">
                <tr>
                    <td>URL</td>
                    <td>
                        <input type="text" name="src">
                    </td>
                </tr>
                <tr>
                    <td>WIDTH</td>
                    <td>
                        <input type="number" name="width">
                    </td>
                </tr>
                <tr>
                    <td> HEIGHT</td>
                    <td>
                        <input type="number" name="height">
                    </td>
                </tr>
                <tr>
                    <td> NAME OF THE REPORT</td>
                    <td>
                        <input type="text" name="name">
                    </td>
                </tr>
            </table>
            <input type="submit">
        </div>
    </div>
</form>

report_one.html

<iframe src = {{src}} width= {{width}} height= {{height}} frameborder="0" allowfullscreen allowtransparency ></iframe>

**view.py **

def reportone(request):
    return render(request, 'report_one.html')
def reporttwo(request):
    return render(request, 'report_two.html')
def reporttest(request):
    return render(request, 'reportform.html')

def add(request):
    if request.method == "POST":
        report_item={}
        src=request.POST['src']
        width=request.POST['width']
        height=request.POST['height']
        name=request.POST['name']
        report_item={'src':src, 'width':width, 'height':height, 'name':name}
        return render(request, 'report_one.html', report_item)
    else:
        return render(request, 'report_one.html' , report_item)

urls.py

from django.contrib import admin
from django.urls import path
from extras.views import ObjectChangeLogView
from . import views

   app_name = 'report'

   urlpatterns = [
      path('reportone', views.reportone, name='reportone'),
      path('reporttwo', views.reporttwo, name='reporttwo'),
      path('reporttest', views.reporttest, name='reporttest'),
      path('add', views.add, name='add'),
    ] 

Upvotes: 2

Views: 501

Answers (1)

Riyas Ac
Riyas Ac

Reputation: 1613

Please try this:

models.py

from django.db import models
class Report(models.Model):
    url = models.URLField(null=False,max_length=300)
    width = models.IntegerField(default=300)
    height = models.IntegerField(default=200)
    name = models.CharField(max_length = 50)

forms.py

from .models import Report
from django.db import models

class ReportForm(forms.Form):
    width = forms.CharField(widget=forms.NumberInput(attrs={'class':' form-control'}))
    height = forms.CharField(widget=forms.NumberInput(attrs={'class':' form-control'}))
    url = forms.URLField(max_length=300)
    name = forms.CharField(max_length = 50)

    class Meta:
        model   = Report
        fields  = [ "url","width","height","name"]

views.py

from .forms import ReportForm
from .models import Report

def reporttest(request):
    form = ReportForm()
    return render(request, 'reportform.html',{'form':form})

def add(request):
    report_item={}
    if request.method == "POST":
        obj= Report()
        obj.url =request.POST['url']
        obj.width=request.POST['width']
        obj.height=request.POST['height']
        obj.name=request.POST['name']
        obj.save()
        report_item={'src':request.POST['url'], 'width':request.POST['width'], 'height':request.POST['height'], 'name':request.POST['name']}
        return render(request, 'report_one.html', report_item)
    else:
        return render(request, 'report_one.html' , report_item)

reportform.html

<form action = "add" method= "post" enctype="multipart/form-data" class="form form-horizontal">  
  <div class="panel panel-default">
    <div class="panel-heading">
        <strong>Add Report</strong>
    </div>
    <div class="panel-body">
        <table class="table table-hover report-body attr-table">
            {% csrf_token %}
            {% for field in form.visible_fields %}
            <tr>
                <td>{{field.label}}</td>
                <td>{{field}}</td>
            </tr>  
            {% endfor %}
        </table>
        <input type="submit" >
    </div>
</div>
</form>

report_one.html

<iframe width="{{width}}" height="{{height}}" src="{{src}}" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

please try this.After change model then migrate it. simple url for checking :https://www.youtube.com/embed/F5mRW0jo-U4 enter image description here

Upvotes: 1

Related Questions