Я довольно новичок в Django, и в этом вопросе я почти уверен, что прочитал все сообщения Stackoverflow, касающиеся подобных проблем, но не могу найти ответ на мою проблему. Я сделал то же самое, что и учебник, которому я следую, и я прочитал документацию Django, и я не могу найти, что не так, и я собираюсь go сойти с ума. Поэтому, пожалуйста, вы можете помочь мне решить эту проблему.
Я использую Django 2.2 и Python 3.7.4
Вот так: я создаю простое CRUD-приложение и URL-адреса, которые я попытаться использовать (способ Django) не работает, и я не понимаю, почему. Поэтому я попытался использовать «обычные» URL, чтобы посмотреть, работает ли это, и это работает. Но я бы предпочел использовать URL-адреса типа Django, если я смогу заставить его работать.
В моем шаблоне у меня теперь есть два разных URL-адреса, для создания у меня есть обычный URL-адрес и для редактирования у меня есть URL-адрес Django. Последний возвращает следующую ошибку:
NoReverseMatch в / fabric_tree / Обратный для update_tissue не найден. update_tissue не является допустимой функцией представления или именем шаблона. Метод запроса: GET URL запроса: http://127.0.0.1: 8000 / tiss_tree / Django Версия: 2.2.6 Тип исключения: NoReverseMatch Значение исключения: Обратное для update_tissue не найдено. update_tissue не является допустимой функцией представления или именем шаблона. Расположение исключения: C: \ Users \ rbass \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ urls \ resolvers.py в _reverse_with_prefix, строка 673 Python Исполняемый файл: C : \ Users \ rbass \ AppData \ Local \ Programs \ Python \ Python37-32 \ python .exe Python Версия: 3.7.4 Python Путь: ['C: \ Users \ rbass \ Dropbox \ Prosjekt -MineTing-Notebooks \ UtviklingImplementering \ FungerendeDiCal \ DiCal \ dical ',' C: \ Users \ rbass \ AppData \ Local \ Programs \ Python \ Python37-32 \ python37.zip ',' C: \ Users \ rbass \ AppData \ Local \ Programs \ Python \ Python37-32 \ DLLs ',' C: \ Users \ rbass \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib ',' C: \ Users \ rbass \ AppData \ Local \ Programs \ Python \ Python37-32 ',' C: \ Users \ rbass \ AppData \ Roaming \ Python \ Python37 \ site-packages ',' C: \ Users \ rbass \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages ',' C: \ Users \ rbass \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ win32 ',' C: \ Users \ rbass \ AppData \ Local \ Programs \ Python \ Python37-32 \ Lib \ сайт-пакет s \ win32 \ lib ',' C: \ Users \ rbass \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ Pythonwin ']
Мои взгляды
from django.http import HttpResponse, Http404, HttpResponseRedirect
from django.shortcuts import render, get_object_or_404, redirect
from django.views import generic
from django.template import loader
from django.views.decorators.csrf import csrf_protect, csrf_exempt, ensure_csrf_cookie
def tissue_tree(request):
''' creating the tissue-tree with possibility for creating, editing and deleting an object '''
tissues = Tissue.objects.order_by('-name')
template = loader.get_template('clinicalmodel/tissue_tree.html')
context = {'tissues': tissues, }
return HttpResponse(template.render(context, request))
def update_tissue(request, pk):
tissue = Tissue.objects.get(id=pk)
tissueform = TissueForm(instance=tissue)
context = {'tissueform': tissueform}
return render(request, 'clinicalmodel/tissue_form.html', context)
Мой ulrs.py
from django.contrib import admin
from django.urls import path, include
from . import views
urlpatterns = [
path('', include('clinicalmodel.urls')),
path('admin/', admin.site.urls),
]
Мой Clinicalmodel.urls.py
from django.urls import path
from . import views
app_name = 'clinicalmodel'
urlpatterns = [
path('create_tissue/', views.create_tissue, name='create_tissue'),
path('tissue_tree/', views.tissue_tree, name='tissue_tree'),
path('update_tissue/<str:pk>', views.update_tissue, name='update_tissue')
]
Мой шаблон
{% extends "base.html" %}
{% block content %}
<div class = "card card-body">
{% if tissues %}
{% for tissue in tissues %}
<ul>
<li>{{tissue.name}}<a class ="btn btn-primary btn-sm-block" href="../create_tissue">Add a new</a>
<a class ="btn btn-primary btn-sm-block" href="{% url 'update_tissue' tissue.id %}">Edit</a>
</li>
</ul>
{% endfor %}
{% endif %}
</div>
{% endblock %}
Мои forms.py:
from django.forms import ModelForm
from .models import Tissue
class TissueForm(ModelForm):
class Meta:
model = Tissue
fields = '__all__'
Моя ткань_форма. html
{% extends "base.html" %}
{% block content %}
<form action="" method="POST">
{% csrf_token %}
{{ tissueform }}
<input type="submit" name="Submit">
</form>
{% endblock %}