【发布时间】:2014-11-27 23:39:41
【问题描述】:
我使用 Django 已经有一段时间了,今天我遇到了一个我一生都无法解决的问题。我正在尝试加载他们自己在上一步中保存的用户配置文件,但是当我尝试打开配置文件所在的页面以便他们可以看到并对其进行编辑时,我收到了我提到的错误。
这是我的意见.py
@verified_email_required()
def home(request):
usuario = Perfil.objects.filter(user=request.user)
context = ({"usuario": usuario})
return render(request, "explore/inicioapp.html", context)
@verified_email_required()
def profile(request, id):
instance = get_object_or_404(Perfil, id=id)
form = ProfileForm(instance=instance)
if request.method == "POST":
form = ProfileForm(request.POST, instance=instance)
if form.is_valid():
perfil = form.save(commit=False)
perfil.user = request.user
perfil.save()
return HttpResponseRedirect("/profile/")
context = ({"form", form}, {"datos": instance})
return render(request, "explore/profile.html", context)
models.py
class Perfil(models.Model):
user = models.OneToOneField(User)
Sexo = models.CharField(max_length=100)
Direccion = models.CharField(max_length=100)
CP = models.CharField(max_length=100)
Ciudad = models.CharField(max_length=100)
Estado = models.CharField(max_length=100)
Pais = models.CharField(max_length=100)
Telefono = models.CharField(max_length=100)
Celular = models.CharField(max_length=100)
PaisPasaporte = models.CharField(max_length=100)
NumeroPasaporte = models.CharField(max_length=100)
VigenciaPasaporte = models.DateField(max_length=100)
ContactoEmergencia = models.CharField(max_length=100)
TelefonoEmergencia = models.CharField(max_length=100)
CorreoEmergencia = models.CharField(max_length=100)
Alergias = models.CharField(max_length=500)
forms.py
class ProfileForm(forms.ModelForm):
class Meta:
model = Perfil
exclude = ["user"]
widgets = {
'Sexo': Select(choices=opciones_sexo, attrs={'class': 'selectpicker'}),
'VigenciaPasaporte': forms.DateInput(attrs={'class': 'datepicker'})
}
labels = {
'Sexo': _("Gender"),
'Direccion': _("Address"),
'CP': _("Zip code"),
'Ciudad': _("City"),
'Estado': _("State"),
'Pais': _("Country"),
'Telefono': _("Phone"),
'Celular': _("Cellphone"),
'PaisPasaporte': _("Passport emission country"),
'NumeroPasaporte': _("Passport number"),
'VigenciaPasaporte': _("Passport expiration date"),
'ContactoEmergencia': _("Emergency contact person"),
'TelefonoEmergencia': _("Emergency contact phone"),
'CorreoEmergencia': _("Emergency contact email")
}
def __init__(self, *args, **kwargs):
kwargs.setdefault("label_suffix", "")
super(ProfileForm, self).__init__(*args, **kwargs)
def clean(self):
cleaned_data = super(ProfileForm, self).clean()
sexoseleccionado = cleaned_data.get("Sexo")
if sexoseleccionado == "none":
raise forms.ValidationError("You must select a gender to continue.")
return cleaned_data
网址
url(r'^profile/(?P<user>\d+)$', views.profile, name="profile"),
最后是 HTML 链接
<a class="btn btn-menu" href="{% url "explore:profile" Perfil.id %}">{% trans "My Profile" %}</a>
谢谢!
【问题讨论】:
标签: python django django-views django-urls