Django не может заставить страницу с формой загрузиться в браузере 404

Я установил свой LAMP с Ubuntu и MariaDB. Код Django смог создать для меня несколько таблиц в базе данных, но я просто получаю 404, когда пытаюсь загрузить свою форму в браузере через URLS http://127.0.0.1/create_unit или http://127.0.0.1/vcm/create_unit

Возможно, мой urls.py неправильный. Может быть, дело в моем settings.py. Я пробовал всевозможные вещи, так что мой код, вероятно, немного исказился.

Из TEMPLATES в settings.py я жестко закодировал путь к моему .html Я много экспериментировал с этим.

'DIRS': [ '/opt/vcm_project/vcm/templates/vcm' ],

urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('create_unit', views.create_unit, name='create_unit'),
]

models.py

from django.db import models

# Create your models here.
class Unit(models.Model):
    unit_code = models.CharField(max_length=15)
    unit_name = models.CharField(max_length=255)
    unit_sector = models.CharField(max_length=255)
    unit_application = models.TextField(max_length=65535)
    unit_url = models.URLField(max_length=255)
    superseded_equivalent = models.CharField(max_length=15)

    def __str__(self):
        return self.unit_name

class Element(models.Model):
    element_number = models.CharField(max_length=100)
    element_name = models.CharField(max_length=255)

    def __str__(self):
        return self.element_name

forms.py

from django import forms
from .models import Unit

class UnitForm(forms.ModelForm):
    class Meta:
        model = Unit
        fields = ('unit_code', 'unit_name', 'unit_sector', 'unit_application', 'unit_url', 'superseded_equivalent')
        widgets = {
            'unit_code': forms.CharField(label='Unit code', max_length=15)
            'unit_name': forms.CharField(label='Unit name', max_length=255)
            'unit_sector': forms.CharField(label='Unit sector', max_length=255)
            'unit_application': forms.CharField(label='Unit application', max_length=65535)
            'unit_url': forms.URLField(label='Unit URL', max_length=255)
            'superseded_equivalent': forms.CharField(label='Superseded equivalent', max_length=15)
        }

views.py

from django.http import HttpResponseRedirect
from django.shortcuts import render

from .models import Unit
from django.views.generic.edit import CreateView, UpdateView

def index(request):
    return HttpResponse("Hello, world. You're at the vcm index.")


def create_unit(request):
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = UnitForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            # process the data in form.cleaned_data as required
            form.save()
            # redirect to a new URL:
            return HttpResponseRedirect('/thanks/')

    # if a GET (or any other method) we'll create a blank form
    else:
        form = UnitForm()

    return render(request, 'vcm/create_unit.html', {'form': form})

Мой HTML здесь /opt/vcm_project/vcm/templates/vcm/create_unit.html

create_unit.html

<form action="{% url 'create_unit' %}" method="POST">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Submit"/>
</form>

admin.py

from django.contrib import admin

# Register your models here.
from .models import Unit

admin.site.register(Unit)


from .models import Element

admin.site.register(Element)
Вернуться на верх