【发布时间】:2014-01-02 13:03:59
【问题描述】:
我想在不登录的情况下为用户订购服务。我正在使用session 来处理这个问题。用户在被重定向到第三方支付网站之前必须填写表格。
我编写了以下代码,它在开发服务器上运行良好。在 Chrome 和 Mozilla 上。部署到生产服务器后,我在 Chrome 上测试,它工作正常,但是当我在 Mozilla 上测试它时,它会带出这个错误:
DoesNotExist: Session matching query does not exist.
型号:
class Pay(models.Model):
user=models.ForeignKey(User,blank=True, null=True)
session=models.ForeignKey(Session)
pub_date=models.DateTimeField()
esell=models.ForeignKey(Esell)
full_name=models.CharField(max_length=100)
email_ad=models.EmailField(verbose_name="Email")
phone_num=models.CharField(max_length=20)
def __unicode__(self):
return '%s %s' % (self.full_name, self.esell)
接受用户数据的视图
@csrf_exempt
def pay_dig(request,esellid):
if request.method=="POST":
form=PayForm(request.POST)
if form.is_valid():
data=form.cleaned_data
newpayy=Pay(
session=Session.objects.get(session_key=request.session._session_key),
pub_date=datetime.datetime.now(),
esell=Esell.objects.get(pk=esellid),
full_name=data['full_name'],
email_ad=data['email_ad'],
phone_num=data['phone_num'])
newpayy.save()
return HttpResponseRedirect('/confirm_payment/')
else:
return HttpResponse('Go back and fill the form correctly')
else:
return render_to_response('pay.html',{'PayForm':PayForm},context_instance=RequestContext(request))
填写上述表格后重定向的视图
def confam_pay(request):
return render_to_response('after_pay_form.html',{'newpayy':Pay.objects.filter(session=request.session._session_key).latest('id')},context_instance=RequestContext(request))
模板
<p><strong> Details</strong> </p>
<p> Your Name is {{newpayy.full_name }} </p>
<p> Price: N{{ newpayy.esell.up_price }} </p>
<p> Name Of Product: {{ newpayy.esell.up_name }} </p>
<input type='image' src='image/file' alt='Make Payment' />
我错过了什么?还是有更好的方法来解决这个问题?
【问题讨论】:
-
我找到了这个stackoverflow.com/questions/5130639/… 并遵循了这个过程。至少,它奏效了。 :)