Поскольку вы не указали версию django, которую вы используете, я собираюсь предположить, что это 2.x. Единственная огромная разница между этой и более поздними версиями 1.x заключается вurlpatterns.Если вы используете 1.11, просто используйте нужные регулярные выражения, как описано в документах. В любом случае, принцип тот же.
urls.py
urlpatterns = [
....
path('<int:some_id>/', views.detail_view, name='detail_view'),
# if django 1.11... you would use ([0-9]{4}) in place of the 'int', or for whatever max amount of numbers you'd want to capture... But I will continue for django 2.x.
]
views.py
def detail_view(request, some_id):
some_object = YourModel.objects.get(id=some_id)
return render(request, 'detail_template.html', {'some_object ': some_object})
detail_template.html
<p>{{ some_object.chromosome }}</p>
<p>{{ some_object.gene_id }}</p>
<p><a href="{% url 'detail_view' some_object.id %}">View details</a></p>
Обратите внимание, что *В блоке 1022 * выше добавлен some_object.id
в качестве аргумента ПОСЛЕ представления, к которому он относится в кавычках.Это самый простой способ.
Вы также можете получить то же самое с помощью метода модели с помощью функции reverse('app_name:view_name', args=[arg_1, arg_2, etc)
, а затем вызвать метод с помощью {{ some_object.your_method }}
.Но все эти аргументы будут зависеть от того, какие шаблоны и функции вашего URL использовались.