我的想法不多了,尝试了不同的解决方案。我正在为我的论文构建Django 1.9的职位招聘页面。到目前为止,我已经完成了大部分工作,但是我一直在努力尝试构建适用于这项工作的方法。
我已经为要约提供了ListView,为DetailView得到了要约页面,但是我已经在其中添加了一个表单,并且即使URL重定向到其他页面,也会出现错误405。
不允许的方法(POST):/ anuncios / display_anuncio / 2 / [22 / Oct / 2018 09:59:00]“ POST / anuncios / display_anuncio / 2 / HTTP / 1.1” 405 0
在urls.py中:
urlpatterns = [
url(r'^$', crear_anuncio, name="crear_anuncio"),
url(r'^postulante_lista_anuncio/', AnuncioPostulanteList.as_view(), name="postulante_lista_anuncio"),
url(r'^postular/', postular, name='postular'),]
在views.py
class AnuncioPostulanteList(ListView):
model = Anuncio
template_name = 'anuncios/postulante_lista_anuncio.html'
class DetailAnuncio(DetailView):
model = Anuncio
template_name = 'anuncios/pagina_anuncio.html'
success_url = reverse_lazy('anuncios:pagina_anuncio')
def postular(request):
if request.method == 'POST':
form = PostularForm(request.POST)
if form.is_valid():
instance = form.save(commit=False)
instance.fecha_postulacion = timezone.now()
instance.id_usuario_postulante = request.request.user.pk
instance.id_anuncio = request.id_anuncio
instance.fecha_cambio_postulacion = timezone.now()
instance.save()
return redirect('anuncios:postulante_lista_anuncio')
else:
form = PostularForm()
return render(request, 'anuncios/postulante_lista_anuncio.html',
{'form': form})
在forms.py(以防万一)中
class PostularForm(forms.ModelForm):
class Meta:
model = models.Postulacion
fields = [
'id_postulacion',
'fecha_postulacion',
'id_usuario_postulante',
'id_anuncio',
'id_estado_postulacion',
'fecha_cambio_postulacion',
]
最后在pagina_anuncio.html
{% extends 'anuncios/base_anuncio_postulante.html' %}
{% load staticfiles %}
{% block content %}
<!-- Page Content
================================================== -->
<div class="dashboard-content-container" data-simplebar>
<div class="dashboard-content-inner" >
<div class="single-page-header" data-background-image="{% static "images/single-job.jpg" %}">
<div class="container">
<div class="row">
<form method="post">
{% csrf_token %}
<div class="col-md-12">
<div class="single-page-header-inner">
<div class="left-side">
<div class="header-image"><a href="single-company-profile.html"><img src="{% static "images/company-logo-03a.png" %}" alt=""></a></div>
<div class="header-details">
<h3>{{ anuncio.titulo_anuncio }}</h3>
<h4>{{ anuncio.alter_titulo_anuncio }}</h4>
<h5> Acerca del Empleador</h5>
<ul>
<li></li><i class="icon-material-outline-business"></i> {{ anuncio.user_ptr_id }} </li>
<li><img class="flag" src="images/flags/gb.svg" alt=""> {{ anuncio.id_direccion }} </li>
</ul>
</div>
</div>
<div class="right-side">
<div class="salary-box">
<div class="salary-type">Salario</div>
<div class="salary-amount">$ {{ anuncio.salario }}</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Content -->
<div class="container">
<div class="row">
<!-- Content -->
<div class="col-md-8 content-right-offset">
<div class="single-page-section">
<h3 class="margin-bottom-25">Descripción</h3>
<p>{{ anuncio.detalle_anuncio }}</p>
</div>
<div class="single-page-section">
<h3 class="margin-bottom-25">Descripción Alternativa</h3>
<p>{{ anuncio.alter_detalle_anuncio }}</p>
</div>
</div>
<!-- Sidebar -->
<div class="col-md-4">
<div class="sidebar-container">
<button type="submit" class="apply-now-button"> Postular Ahora <i class="icon-material-outline-arrow-right-alt"></i></button>
<!-- Sidebar Widget -->
<div class="sidebar-widget">
<div class="job-overview">
<div class="job-overview-headline"> Resumen del Trabajo </div>
<div class="job-overview-inner">
<ul>
<li>
<i class="icon-material-outline-location-on"></i>
<span> Dirección </span>
<h5> {{ anuncio.id_direccion }} </h5>
</li>
<li>
<i class="icon-material-outline-business-center"></i>
<span>Tipo de Trabajo</span>
<h5>{{ anuncio.tipo_trabajo }}</h5>
</li>
<li>
<i class="icon-material-outline-local-atm"></i>
<span>Salario</span>
<h5>{{ anuncio.salario }}</h5>
</li>
<li>
<i class="icon-material-outline-access-time"></i>
<span>Posteado hace:</span>
<h5>2 days ago</h5>
</li>
</ul>
</div>
</div>
</div>
<!-- Sidebar Widget -->
<div class="sidebar-widget">
<h3>Compártelo</h3>
<!-- Copy URL -->
<div class="copy-url">
<input id="copy-url" type="text" value="" class="with-border">
<button class="copy-url-button ripple-effect" data-clipboard-target="#copy-url" title="Copy to Clipboard" data-tippy-placement="top"><i class="icon-material-outline-file-copy"></i></button>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
{% endblock %}