Как заставить работать приложение в django? Запуск скрипта python как класса в django

Я немного новичок в django и я потерялся, я не знаю, что делать. Я объясню, что я хочу, возможно, вы сможете мне помочь.

Я хочу создать веб-страницу на моем сайте, где вы вводите свои данные и на основе ваших данных создается шаблон excel, который вы загружаете. Самое простое, вы вводите название строк и столбцов и загружаете документ excel.

Вот что я пробовал до сих пор... У меня есть папка my_django и папка my_app, в my_app я пытаюсь создать приложение для создания шаблонов

Это my_app/views.py

from django.shortcuts import render
from django.http import HttpResponse
from .forms import TemplateForm
import xlsxwriter
from xlsxwriter import workbook

def home(request):
    return render(request, 'my_app/home.html')

def create_template(request):
    return render(request, 'my_app/create_template.html')

class CreateMyWebTemplate():
    def create_template(doc_name, name_sheet, years, name_columns):
        file = xlsxwriter.Workbook(doc_name + '_template.xlsx')
        worksheet_data = file.add_worksheet()
        worksheet_data.write_row(0, 1, years)
        worksheet_data.write_column(1, 0, name_columns)
        file.close()
        return file

Это my_app/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='my-home'),
    path('create-template/', views.create_template, name='my-create-template'),
]

Это my_app/forms.py

from django import forms

class CreateMyWebTemplate(forms.Form):
    doc_name = forms.CharField()
    name_sheet = #selectedcountry
    years = #listfromweb
    name_rows = #imputed column names

Это my_app/template/my_app/create_template.html

{% extends "my_app/base.html" %}
{% block content %}

<div class="create-template-box">
      <form action="/">
        <h1>Create your template</h1>
        <div class="item">
          <p>Document name</p>
          <div class="name-item">
            <input type="text" name="doc_name" placeholder="Input document name without spaces" />
          </div>
        </div>
        <div class="item">
          <p>Select a country for the name of sheet</p>
            <select name="name_sheet">
              <option value="">Country</option>
              <option value="1">Russia</option>
              <option value="2">Germany</option>
              <option value="3">France</option>
              <option value="4">Armenia</option>
              <option value="5">USA</option>
            </select>
          </div>
        </div>
        <div class="item" name="years">
          <p>Select a years for columns</p>
            <p> Start: </p> <select name="yearpicker" id="yearpicker"></select>
            <br>
            <p>End: </p> <select name="yearpicker2" id="yearpicker2"></select>
        </div>
        <div class="item">
          <p>Please input a names of rows... seperate with commas</p>
          <input type="text" name="name_rows"/>
        </div>
        <div class="btn-block">
          <button type="submit" href="#">Create and Download!</button>
        </div>
      </form>
    </div>

<script type="text/javascript"
        src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"> 
</script>
<script type="text/javascript">
let startYear = 1800;
let endYear = new Date().getFullYear();
for (i = endYear; i > startYear; i--)
{
    $('#yearpicker, #yearpicker2').append($('<option />').val(i).html(i));
}

$('select').on('change', function(){
  let arr = Array.from({length:$('#yearpicker2').val() - +$('#yearpicker').val()},(v,k)=>k + +$('#yearpicker').val())
  console.log(arr);
})
</script>
{% endblock content %}

В my_django app включен в settings.py и urls.py

Для представления create_template вы можете обрабатывать методы HTTP GET и HTTP POST. Вы также можете использовать встроенную в Django обработку форм, чтобы сделать это намного проще.

Новый create_template.html

...
          <form action="create_template" method="GET">
            {% csrf_token %}
            <h1>Create your template</h1>
            <div class="item">
              <table>
                {{ form.as_table }}
              </table>
            </div>
            <div class="btn-block">
              <input type="button" type="submit" value="Create and Download!"/>
            </div>
          </form>
...

Новое содержание файла views.py

        from   django.forms import Forn, CharField, ChoiceField, IntegerField, 
        ...
    
            class TemplateForm(Form):
               name = CharField(label='Doc name')
               choices=[('1', 'Russia'), ('2', 'Germany'), ('3', 'France'),
                        ('4', 'Armenia'), ('5', 'USA')]
               country = ChoiceField(label='name_sheet', initial='5', choices=choices)
               choices = []
               for year in range (2000, 2050):
                   choices.append( (year, year) )
               year1 = ChoiceField(label='Starting Year', initial=2021, choices=choices)
               year2 = ChoiceField(label='Ending Year', initial=2022, choices=choices)
               columns = CharField(label='Column names')
            
            def create_template(request):
                if request.method == 'GET':
                    form = TemplateForm()
                    return render(request, 'my_app/create_template.html' form=form)
                else:
                    form = TemplateForm(request.POST)
                    <use form inputs as needed>
    ...
Вернуться на верх