在 django 中,从 html 表格行复制文本并尝试将其写入文本文件时如何解决反向错误?

问题描述 投票:0回答:1

我有一个 Django 应用程序,其页面显示从模型填充的文本字符串的数据表。 每个字符串都是一个网站 url。我需要能够单击这些行中的任何一行并将该 url 字符串写入文本文件。 到目前为止,当服务器尝试加载主页时,我所得到的结果会导致“反向”错误。

这是模型:

class Environment(models.Model):
url = models.CharField(max_length = 250, null=True, 
blank=True)

def __str__(self):
    return self.url

这是主页的视图,其中显示从模型填充的 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 模式:

path('write-url//',views.write_url_to_file,name='write_url_to_file'),

这是模板标签。这个想法是单击一个 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 %},但它仍然会导致反向错误。

在视图中我也尝试过重定向(反向('app:home'))但在加载主页时仍然出现相同的错误。

如有任何建议,我们将不胜感激

html django django-views
1个回答
0
投票

<str:…>
匹配 每个 字符,除了斜杠,因此大多数 URL 可能不起作用。使用
<path:…>
路径转换器[Django-doc]
:

path(
    'write-url/<path:url>/',
    views.write_url_to_file,
    name='write_url_to_file',
),
© www.soinside.com 2019 - 2024. All rights reserved.