Django テンプレートからビューに変数を渡す 質問する

Django テンプレートからビューに変数を渡す 質問する

私は Django 1.7 で初めてのサイトを構築していますが、クリックからビューに変数を渡す方法がわからず困っています。GET も空です。

私のテンプレートには Facebook アカウント ID のテーブルがあり、クリックするとユーザーが管理者である Facebook ページのリストが表示されます。

私のテンプレート:

{% for SocialAccount in accountlist %}
   <tr>
      <td><a href="{% url 'INI:fbpages' %}">{{ SocialAccount.uid }}</a></td>
      <td>{{ SocialAccount.extra_data.first_name }}</td>
      <td>{{ SocialAccount.extra_data.last_name }}</td>
      <td>{{ SocialAccount.extra_data.email }}</td>
   </tr>
{% endfor %}

そして私の見解:

def fbpages(request, fbuser):
    djuser = request.user.id
    context = RequestContext(request)
    fbuser = 1234634
    pagelist = facebook.pages(request, djuser, fbuser)
    blocks = {'title': 'Facebook Pages',
          'pagelist': pagelist}
    return render(request, "initiative/ListFBPages.html", blocks)

URL に ID を入れれば簡単にできますが、URL にページ/ユーザー ID を公開したくありません。簡単な解決策があるような気がしますが、まだわかりません。

ご協力ありがとうございます。

ベストアンサー1

テンプレートから Django ビューにデータを送信できるのは、4 つの異なる方法のみです。URL に情報を含めたくない場合は、おそらくオプション 1 と 4 のみを使用できます。

1. 投稿

したがって、値を含むフォームを送信することになります。

# You can retrieve your code in your views.py via
request.POST.get('value')

2. クエリパラメータ

合格するでしょう//localhost:8000/?id=123

# You can retrieve your code in your views.py via
request.GET.get('id')

3. URLから(参照ここ例えば)

合格するでしょう//localhost:8000/12/results/

# urls.py
urlpatterns = patterns(
    # ...
    url(r'^(?P<question_id>\d+)/results/$', views.results, name='results'),
    # ...
)

あなたの意見:

# views.py
# To retrieve (question_id)
def detail(request, question_id):
    # ...
    return HttpResponse("blahblah")

4.セッション(Cookie経由)

セッションを使用することの欠点は、それをビューに渡すか、事前に設定する必要があることです。

# views.py
# Set the session variable
request.session['uid'] = 123456

# Retrieve the session variable
var = request.session.get('uid')

おすすめ記事