私は 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")
セッションを使用することの欠点は、それをビューに渡すか、事前に設定する必要があることです。
# views.py
# Set the session variable
request.session['uid'] = 123456
# Retrieve the session variable
var = request.session.get('uid')