2017-11-26 10 views
0

私の質問の性質からおそらく分かるかもしれませんが、私は少し新しくなっています。私はこの主題に関して同様の記事を読みましたが、そのほとんどは私の頭を過ぎて行ってしまいました。私が直面していた状況に100%適応しているとは思わなかったので、簡単な方法で質問しました。フォームがDjangoのviews.pyに送信されたときにHTML5データ属性を取得する方法

質問:


のは、私は、HTMLフォームの下に実行していると、以下のビューのセクションに示すように、ユーザが自分のviews.pyにフォームを送信する、私は値を格納することが可能だろうと言ってみましょうcar_selection = request.POST.get( 'car')を使用して、ユーザーの選択を確認します。

質問:「data-animal-type = "spider"」のHTML5データをキャプチャするにはどうすればよいですか?

私にはそこにグルスがいますが、私の頭を爆破しないでください。私は本当に簡単な助けが必要です。

ありがとうございます。


例HTMLフォーム:


<select name="carlist" > 
    option data-car-type="premium" name= "car" value="audi">Audi</option> 
</select> 


例Djangoのビュー機能


def getcar(request): 
    ... 
    if request.method == 'POST' 
    ... 
    selected_carn = request.POST.get('car') 

+0

ブラウザは 'data-car-type'をサーバーに送信しません。リクエストでは取得できません。ブラウザは 'name'と' value'だけを送ることができます。 – furas

+1

別の方法では、値の中でプレミアムを送信することになります。値は "{'type': 'premium'、 'val': 'audi'}」となり、サーバ上でjson.loads(value)を使って文字列を辞書に変換することができます –

+0

Thanks Salmaan。これはよく見え、本当に私に考えさせている。 – seeker

答えて

0

まあ、実際には可能です。

def getcar(request): 
    ... 
    if request.method == 'POST' 
     myform = MyForm(request.POST) 
     ... 

myform HTMLで汚れたフォームが含まれています。あなたのビューは次のようになりますと言います。 BeautifulSoupを使用してデータを抽出することができます。このようなもの:

from bs4 import BeautifulSoup 
test = BeautifulSoup(str(myform)) 
data-values = [item["data-car-type"] for item in test.find_all() if "data-car-type" in item.attrs] 

これは、データーカータイプの属性から値を抽出します。

言われているように、これは悪いデザインのようです。私は確かに "車のタイプ"のデータを取得するためにそのような長さに行くことはありません。おそらくあなたのデータベースのどこかに書かれています。そこからそれを入手してください。

+0

返信いただきありがとうございます。送信されたHTML5データ属性からデータ属性値を取得する理由は、ユーザーにアイテムの数量を増やすチャンスを与えるためです。 2つのオレンジまたは4を選択するショッピングカートのように見えます。ユーザーが量を増やすと、jqueryを使用してHTML5データ属性の整数値を増やします。つまり、本質的にデータはユーザー指定になります。この計画は悪いですか?また、Beautifulsoupを使用することはできません。私はできるだけ依存性が少ないので、ソリューションはシンプルでコンパクトです。 – seeker

+0

私は、量の増加を質問の観点に置く方法と、その値をデータ属性に入れたい理由は分かりません。フォーム内の入力フィールドまたは非表示の入力フィールドに数量を入れると、 'request.POST'でその値が取り込まれます。それは悪い計画ではなく、データ属性を持つ実装が複雑すぎると思われるか、またはあなたの計画全体を完全に理解できないかもしれません。 – Borut

+0

ご協力いただきありがとうございます。私はオプション2が動作することを知っているが、私は(今しようとする)前にオプション1を実装していない。私がbeautifulsoupで行った短い読書に基づいて、私は対処しなければならない少しの挑戦を見ることができますが、あなたは私がコミュニティに提示した問題に対する解決策をはっきりと提示しました。あなたの時間を与えてくれてありがとう。とても有難い。 – seeker

関連する問題