質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2144閲覧

django アンカーリンクをurlのみ貼りたい

grilled_python

総合スコア237

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/01/16 06:56

編集2019/01/16 21:53

こちらはscrapyでスクレイピングしてきたデータです。
site_dataという変数の中には10サイトほどのurl、title、ディスクリプション、h1~h6が多次元配列で格納されています。
画像1のように表示されているのですがurlの部分だけアンカーリンクを貼りたいのですがうまく行きません。

データの形は下記の様な感じです。
[{'url': 'hoge.com, 'title':'hogeのtitle', 'h1': 'hogeのh1'}, {'url': 'huge.com, 'title':'hubeのtitle' 'h1': 'hugeのh1'},{'url': 'title':'piyoのtitle', 'piyo.com, 'h1': 'piyoのh1'}]

<div> {% if site_data != None %} {# <li class="list-group" style="max-width: 1000px;">#} {% for dict in site_data %} {% for site_data_key, site_data_value in dict.items %} {% if site_data_key != 'rank' %}{# 検索順位は最初に表示しているためif文で消してある#} <li class="list-group-item bg-light">{{ dict.rank }}位【{{ site_data_key }}】<br>{{ site_data_value }}</li> {% endif %} {% endfor %} <br> {% endfor %} {% endif %} </div> ```![画像1](c1bfbab2acf35d3f8e9b7c78fbe3537f.png) この様にすると全体にアンカーがかかってしまいます。 ```ここに言語を入力 <li class="list-group-item bg-light">{{ dict.rank }}位【{{ site_data_key }}】<br><a href="{{ url }}" >{{ site_data_value }}</a></li> ```![![画像2](79b19f0c2e167d2a51d763f49263dde2.png)](c7fb072453b87bd91165ad1ee6bc7cdd.png) そもそもとしてこの様にhtmlで処理せずにviewsで処理してあとは貼るだけ。の様な処理にするべきなのでしょうか? よろしくお願いいたします。 **追記** テンプレート上で上手くいかないので、scrapyで取ってきたデータにアンカーをつければ良いだろうと思い。 ```ここに言語を入力 def process_item(self, item, spider): url = item.get(""url") a = "<a href=''>" b = "</a>" url_with_anchor = a+ url + b item['url'] = url_with_anchor return item

この様な式を追記すると
下記の様に文字列になってしまいました。
ここから文字列をとる様な処理はどうすればいいでしょうか?
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

urlize フィルタを使用しました。

{{site_data_value | urlize}}

これだけで解決しました。フィルタ色々あるんですね!!便利!!

投稿2019/01/16 23:44

grilled_python

総合スコア237

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問