HTML-форма django 2.1, отправляющая сообщения об ошибках - PullRequest
1 голос
/ 29 сентября 2019

Я пытаюсь опубликовать данные из HTML-формы в моей базе данных, однако я получаю сообщение об ошибке, что URL не существует.то, что я пытаюсь сделать, это позже превратить тестовую форму в динамически добавляемые поля с использованием HTML и Jquery, а не с помощью набора форм для упрощения проектирования пользовательского интерфейса и обработки его в серверной части данго.

также обратите внимание, что я назначаю внешний ключкоторый представляет собой имя_старты, передавая его через URL-адрес для проверки.

код выглядит следующим образом:

models.py:

     class Startup(models.Model):
         author = models.ForeignKey(User, on_delete=models.CASCADE)
         startup_name = models.CharField('Startup Name', max_length = 32, null = False, blank = False)

     class Team (models.Model):
         str_team = models.ForeignKey(Startup, on_delete=models.CASCADE)
         name = models.CharField('Name',max_length = 32, null = False, blank = False)
         position = models.CharField('Title/Position', max_length = 32, null = False, blank = False)
         qualification = models.CharField('Degrees/Qualifications', max_length=32,null=False,blank=False)  

views.py:

     def create_startupform(request):
         if request.method == 'POST':
             form = startupform(request.POST)
             if form.is_valid():
                 result = form.save(commit=False)
                 result.author = request.user
                 result.save()
                 return redirect('test', startup_id = result.pk)
         else:
             form = startupform()
         return render(request, 'str_name.html', {'form': form})

     def test (request, startup_id):
         e = Startup.objects.values('startup_name')

         if request.method == 'POST':
             na = request.POST.get("name")
             po = request.POST.get("position")
             qu = request.POST.get("qualification")

             ref = Team(name = na, position = po, qualification = qu, str_team = e)
             ref.save()
             return redirect('str_dashboard')
         return render(request, 'test.html')

forms.py:

     class startupform(forms.ModelForm):
         class Meta:
             model = Startup
             fields = ('startup_name',)
             widgets = {
                 'startup_name': forms.TextInput(attrs = {'class':'form-control'}),
             }

         def clean(self):
             super ( ).clean ( )
             startup_name = self.cleaned_data.get ( 'startup_name' )
             startup_qs = Startup.objects.filter ( startup_name = startup_name )
             if startup_qs.exists ( ):
                 raise forms.ValidationError ( 'This Startup Already Exist!' ) 

test.html:

     <form id="add-extra" class="form" method="post" action = "{% url 'test' %}">{% csrf_token %}
<div class="form-row profile-row">
    <div class="col-md-8 col-lg-12">
        <hr />
        <h4>Startup Core Team</h4>
        <div class="form-row">
            <div class="col-sm-12 col-md-6 col-lg-12">
                <div class="form-group">
                    <div class="table-responsive">
                        <table class="table">
                            <thead>
                                <tr>
                                    <th>Name</th>
                                    <th>Position</th>
                                    <th>Qualification</th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td><input class="form-control" type="text" name="candidate_name" /></td>
                                    <td><input class="form-control" type="text" name="position"/></td>
                                    <td><input class="form-control" type="text" name="qualification"/></td>
                                    <td><button class="btn btn-primary d-lg-flex align-items-lg-center" type="button" style="margin-top: 4px;margin-left: 15px;background-color: rgb(24,130,7);"><i class="fas fa-plus"></i></button></td>
                                </tr>
                                <tr></tr>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
        <hr />
        <div class="form-row">
            <div class="col-md-12 content-right"><button class="btn btn-primary text-center border rounded d-lg-flex justify-content-lg-end align-items-lg-center form-btn" type="post" style="margin-left: 1040px;padding: 6px;">SAVE </button></div>
        </div>
    </div>
</div>

URL-адреса:

     from django.urls import path
     from . import views



     urlpatterns = [

         path ( 'str_dashboard/' , views.str_dashboard , name = 'str_dashboard' ),
         path ( 'create_startupform/' , views.create_startupform, name = 'create_startupform' ),
         path('test/', views.test, name='test'),

       ]   

Ошибка:

     Page not found (404)
     Request Method:    GET
     Request URL:   http://127.0.0.1:8000/test/
     Using the URLconf defined in sourcing.urls, Django tried these URL patterns, in this order:

1 Ответ

0 голосов
/ 29 сентября 2019

Вы пытаетесь использовать URL-адрес, которого нет в urls.py:

     urlpatterns = [
         ...
         path('test/<int:startup_id>/', views.test, name='test'),
         path('test/', views.test, name='test_base'),  # add this
       ]

URL-адрес 'http://127.0.0.1:8000/test/' не будет совпадать, поскольку к нему должен быть прикреплен' startup_id 'сваш urls.py.http://127.0.0.1:8000/test/1 будет работать.

Если вы делаете так, как я написал выше, убедитесь, что ваше мнение принимает startup_id как необязательный.Или используйте другую функцию для вызова без идентификатора запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...