[英]django- createview with url parameter shows error
I have a view AsignacionGeneral from where I call the view assignacion_contact with href="{% url 'gestionAsignacion:assignacion_contact' pk=asig.id %}
and pass the parameter by url which is the primary key to be inserted later in the foreign key idasignacion_general = models.ForeignKey('AsignacionGeneral', models.DO_NOTHING, db_column='idasignacion_general')
, the view assignacion_contact has a form, it opens fine, I fill the form but when I send it I want it to stay in the same view. example: I am in the url "assignation/assignationContact/1", the pk=1 , I take that value and assign it to the Foreign Key, I fill the form with the data but when I send it it redirects me to 'assignation/assignationContact' which does not exist and I want it to stay in the url ' 'asignacion/asignacionContact/1'我有一个 AsignacionGeneral 视图,我用href="{% url 'gestionAsignacion:assignacion_contact' pk=asig.id %}
调用视图 assignacion_contact 并通过 url 传递参数,这是稍后插入外键的主键idasignacion_general = models.ForeignKey('AsignacionGeneral', models.DO_NOTHING, db_column='idasignacion_general')
,视图assignacion_contact有一个表格,它打开很好,我填写表格但是当我发送它时我希望它保持在同一个视图中. 示例:我在 url "assignation/assignationContact/1" 中,在 pk=1 中,我获取该值并将其分配给外键,我用数据填写表格,但是当我发送它时它会将我重定向到' assignment/assignationContact' 不存在,我希望它留在 url ''asignacion/asignacionContact/1'
url.py网址.py
app_name = 'gestionAsignacion'
urlpatterns = [
path('asignacionContact/<int:pk>',AsignacionCreateView.as_view(), name='asignacion_contact'),
path('detalle/asignacion/<int:pk>',descargarAsignacion.as_view(), name='descargar_asignacion'),
path('asignacionGeneral/',asignacionGeneral.as_view(), name='asignacion_general'),
]
view.py视图.py
class AsignacionCreateView(CreateView):
model=AsignacionContact
form_class=AsignacionForm
template_name='gestionAsignacion/asignacion_contact.html'
# success_url = reverse_lazy('gestionAsignacion:asignacion_general')
def get_initial(self):
# call super if needed
return {'idasignacion_general': self.kwargs['pk']}
def form_valid(self, form):
print('hola form_valid')
isvalid = super().form_valid(form)
return isvalid
def get_success_url(self):
return HttpResponseRedirect(reverse('gestionAsignacion:asignacion_general'))
def get_context_data(self, **kwargs):
# Llame primero a la implementación base para obtener un contexto
context = super().get_context_data(**kwargs)
# Agregar un QuerySet de todos los libros
context['asig_general'] = AsignacionGeneral.objects.get(id=self.kwargs['pk'])
context['object_list'] = AsignacionContact.objects.filter(idasignacion_general=self.kwargs['pk'])
return context
model.py模型.py
class AsignacionContact(models.Model):
id = models.IntegerField(primary_key=True)
idasignacion_general = models.ForeignKey('AsignacionGeneral', models.DO_NOTHING, db_column='idasignacion_general')
nombre_asignacion = models.CharField(max_length=100, blank=True, null=True)
fecha_inicio = models.DateField(blank=True, null=True)
fecha_fin = models.DateField(blank=True, null=True)
observacion = models.CharField(max_length=255, blank=True, null=True)
def __str__(self):
return self.nombre_asignacion
class Meta:
managed = False
db_table = 'asignacion_contact'
form.py表格.py
class AsignacionForm(ModelForm):
def __init__(self, *args, **kwargs):
super(AsignacionForm, self).__init__(*args, **kwargs)
for field in iter(self.fields):
self.fields[field].widget.attrs.update({
'class': 'form-control'
})
class Meta:
model=AsignacionContact
fields=['idasignacion_general','nombre_asignacion','fecha_inicio','fecha_fin','observacion']
This path('asignacionContact/<int:pk>',...
means that the primary key of the object is required to show the view.此path('asignacionContact/<int:pk>',...
表示需要对象的主键才能显示视图。
For example, an object with pk=1
would work for the URL path asignacion/asignacionContact/1
.例如,具有pk=1
的对象适用于 URL 路径asignacion/asignacionContact/1
。
You don't have a view that's just asignacion/asignacionContact/
in your urls.py.您的 urls.py 中没有仅是asignacion/asignacionContact/
的视图。
That's why you are getting a Page not found (404).这就是为什么您找不到页面 (404)。
I think you think <int:pk>
in urls.py are GET
querystrings .我认为您认为 urls.py 中的<int:pk>
是GET
querystrings 。 They are not.他们不是。 They are required URL values.它们是必需的 URL 值。 GET
parameters appear appended to the URL for example if you were to submit a form with a method="GET"
.例如,如果您要提交带有method="GET"
的表单,则GET
参数会附加到 URL 中。 The form data would appear in the URL.表单数据将出现在 URL 中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.