Как в django решить обратную ошибку при копировании текста из строки html-таблицы и попытке записать его в текстовый файл?
У меня есть приложение django со страницей, которая показывает таблицу данных с текстовыми строками, заполненными из модели. Каждая строка - это url сайта. Мне нужно иметь возможность нажать на любую из этих строк и записать строку url в текстовый файл. То, что у меня есть на данный момент, приводит к ошибке 'reverse', как только сервер пытается загрузить домашнюю страницу.
Вот модель:
class Environment(models.Model):
url = models.CharField(max_length = 250, null=True,
blank=True)
def __str__(self):
return self.url
Вот представление для главной страницы, которое отображает список урлов, заполненных из модели:
def home(request):
envs = Environment.objects.all()
f = open('environment.txt', 'r')
file_content = f.read()
f.close()
context = {'title':'Home Page',
'year':datetime.now().year, 'envs':envs, 'file_content':file_content}
return render(request, 'app/home.html', context)
вот вид для записи текста url в файл:
def write_url_to_file(request, url):
with open('environment.txt', 'w') as file:
file.write(url)
file.close()
return redirect('app:home')
Вот url.py:
from django.urls import path, reverse
from app import views
app_name = 'app'
urlpatterns = [
path('', views.home, name='home'),
path('write-url/<str:url>/', views.write_url_to_file, name='write_url_to_file'),
path('report/', views.report, name='report'),
path('extract-and-display/', views.extract_and_display, name='extracted_elements'),
path('contact/', views.contact, name='contact'),
path('about/', views.about, name='about'),
path('smoke_tests/', views.smoke_tests, name='smoke'),
path('repairs/', views.repairs, name='repairs'),]
Здесь находится тег шаблона. Идея заключается в том, чтобы щелкнуть на url и записать его в текстовый файл:
<table>
<tr>
<th>Environment</th>
</tr>
{% for env in envs %}
<tr>
<td><a href="{% url 'app:write_url_to_file' env.url %}">{{ env.url }}</a></td>
</tr>
{% endfor %}
Я пробовал разные вещи, например, изменил шаблон на {% url 'app:write_url_to_file' url=env.url %}, но это все равно приводит к обратной ошибке.
В представлении я также попробовал redirect(reverse('app:home')), но все та же ошибка при загрузке домашней страницы.
Любой совет будет очень признателен
<str:…>
matches every character, except the slash, so most URLs will probably not work. Use the <path:…>
path converter [Django-doc]:
path(
'write-url/<path:url>/',
views.write_url_to_file,
name='write_url_to_file',
),