0
我想根據我的Django站點上的模型或數據庫表分配一個會話變量。換句話說,在第一次使用時,我希望用戶從下拉列表中選擇一個縣,並將該縣或PK的名稱寫入會話變量。在那裏,那些數據會在觸發模板之前被拉到context_processor中。現在,我得到的錯誤是如何在Django中從model/table編寫會話變量?
(1062,「關鍵‘county_id’重複條目‘1’」)
我不知道,如果它試圖多個條目寫入到數據庫,但我並不需要任何數據庫,就像其他數據一樣。我只想要一個會話變量存儲。我相信我的問題是我的觀點,但我似乎無法做到。如果你不能說,我很新。
我有一個model.py定義,訪問縣的另一個表。
class NonUserCounty(models.Mdel):
county = models.ForeignKey(County)
def __unicode__(self):
return self.county
我已經定義了一個form.py
class NonUserCountyForm(forms.ModelForm):
class Meta:
model = NonUserCounty
而一個views.py
def Welcome(request):
if request.method == 'POST':
form = NonUserCountyForm(request.POST)
if form.is_valid():
mycounty = form.cleaned_data['county']
request.session['mycounty'] = mycounty
form.save()
return HttpResponseRedirect('/')
else:
form = NonUserCountyForm()
context = {'form': form}
return render_to_response('welcome.html', context, context_instance=RequestContext(request))
一個背景處理器
def mynews(request):
now = datetime.now()
if not request.user.is_authenticated():
if not "mycounty" in request.GET:
MyNews = News
county = County
else:
return HttpResponseRedirect('/welcome/')
else:
user = request.user.get_profile()
county = user.county.all()
MyNews = News
而且我的模板....
<form action="" method="post">
{% csrf_token %}
{{ form }}
<p><input type="submit" alt="register" value="Sign Up" /></p>
當我刪除'form.save()'時,它不會引發錯誤,但它似乎並不實際保存會話數據。有沒有我需要用於會話變量的保存方法? –
不,這應該足夠了(因爲您使用的是頂級名稱,而不是修改子字典中的值)。你在哪裏檢查更改的值? –
模板級別。正如你所看到的,如果設置了變量,它應該重定向到不同的頁面,但是它不能這樣做。我試圖把這個變量放到welcome.html模板中,但是變量沒有顯示出來。 –