Я не могу обновить объект в Django?

Я создал приложение Django, где вы добавляете задания, и я полностью могу добавлять новые задания, но я могу обновлять их по какой-то причине? Функция обновления не работает, и я не знаю почему?

<form action='/update_job/{{job.id}}' method="POST">
    <ul>
    {% for message in messages %}
        <li>{{message}}</li>
    {% endfor %}
    </ul>
    {% csrf_token %}
    Title: <input type='text' value="{{job.job}}" name='job'>
    Description: <input type='text' value="{{job.description}}" name='description'>
    Location: <input type='text' value="{{job.location}}" name='location'>
    <input type='submit'>
</form>

def update_job(request, job_id):
    errors = Job.objects.job_validator(request.POST, job_id)
    if job.creator.id != request.session['user_id']:
        messages.error(request, "This isn't yours to edit!")
    if len(errors):
        for key, value in errors.items():
            messages.error(request, value)
        return redirect(f'/edit_job/{job_id}')
    job = Job.objects.get(id=job_id)
    job.job = request.POST['job']
    job.description = request.POST['description']
    job.location = request.POST['location']
    job.save()
    return redirect('/main')

Page not found (404)
Request Method: POST
Request URL:    http://localhost:8000/update_job/2
Using the URLconf defined in Python_Exam.urls, Django tried these URL patterns, in this order:
register
login
logout
main
job_link
job/create
jobs/<int:job_id>/view
jobs/<int:job_id>/delete
jobs/<int:job_id>/edit
jobs/<int:job_id>/update_job
The current path, update_job/2, didn't match any of these.

Вы поменяли местами первичный ключ и update_job, это:

<form action="/{{ job.id }}/update_job" method="POST">
     …
</form>

Однако вы можете использовать тег шаблона {% url … %} [Django-doc] для определения URL.

Вернуться на верх