【发布时间】:2018-07-26 18:36:09
【问题描述】:
这是点击链接时显示的内容
找不到页面 (404)
请求方法:GET 请求 URL: http://localhost:8000/jobapplication/new/1
使用 careal.urls 中定义的 URLconf,Django 尝试了这些 URL 模式,按以下顺序:
^$ [name='landing-index']
^管理员/
^帐户/
^任务管理器/
^login/$ [name='login']
问题是我不知道为什么它以http://localhost:8000/jobapplication/new/1打开链接,什么时候应该是http://localhost:8000/taskmanager/jobapplication/new/1
-
这就是我在 urls.py 中的内容
from django.conf.urls import include, url from django.contrib import admin from django.conf import settings from django.contrib.auth import views as auth_views from landingpage import views as landingpage_views urlpatterns = [ url(r'^$', landingpage_views.index, name='landing-index'), url(r'^admin/', admin.site.urls), url(r'^accounts/', include('allauth.urls')), url(r'^taskmanager/', include('taskmanager.urls')), url(r'^login/$', auth_views.login, name='login'), ] -
这是在应用任务管理器的 urls.py 中
from django.conf.urls import url from . import views from taskmanager.views import * app_name = 'taskmanager' urlpatterns = [ # Task manager urls url(r'^$', JobApplicationIndex.as_view(), name='index'), url(r'jobapplication/add/(?P<jobpost_id>[0-9]+)/$', JobApplicationCreate.as_view(), name='jobapplication-add'), url(r'jobapplication/new/(?P<jobpost_id>[0-9]+)/$', views.JobApplicationAdd, name='jobapplication-new'), url(r'jobapplication/edit/(?P<jobpost_id>[0-9]+)/$', views.JobApplicationEdit, name='jobapplication-edit'), url(r'jobapplication/edit/(?P<pk>[0-9]+)/$', JobApplicationUpdate.as_view(), name='jobapplication-edit'), url(r'^jobapplication/(?P<pk>[0-9]+)/$', JobApplicationDetails.as_view(), name='jobapplication-detail'), # Company urls url(r'company/$', CompanyIndex.as_view(), name='company-index'), url(r'company/add/$', CompanyCreate.as_view(), name='company-add'), url(r'^company/(?P<pk>[0-9]+)/$', CompanyDetails.as_view(), name='company-detail'), # Job Post urls url(r'jobpost/$', JobPostIndex.as_view(), name='jobpost-index'), url(r'^jobpost/(?P<pk>[0-9]+)/$', JobPostDetails.as_view(), name='jobpost-detail'), # Statistics urls url(r'^kpi/$', views.kpi, name='kpi'), ] -
这就是我在taskmanager中views.py中的内容,与jobapplication相关
# Job Application views class JobApplicationIndex(generic.ListView): template_name = 'taskmanager/jobapplication_index.html' def get_queryset(self): if self.request.user.is_authenticated: return JobApplication.objects.filter(user=self.request.user.id).order_by('-created_at') class JobApplicationCreate(CreateView): model = JobApplication fields = ['jobpost', 'sent_date', 'deadline', 'success_rate'] def get_initial(self): jobpost = get_object_or_404(JobPost, id=self.kwargs.get('jobpost_id')) return { 'jobpost':jobpost, } def form_valid(self, form): form.instance.user = self.request.user return super(JobApplicationCreate, self).form_valid(form) class JobApplicationDetails(generic.DetailView): model = JobApplication class JobApplicationEdit(UpdateView): model = JobApplication #fields = ['jobpostid', 'is_favorite'] #p = JobApplication.objects.get(id=jobpostid) #p.is_favorite = is_favorite #p.save() class JobApplicationUpdate(UpdateView): model = JobApplication fields = ['sent_date', 'deadline', 'success_rate'] template_name_suffix = '_update_form' def JobApplicationAdd(request, jobpost_id): if request.method == 'GET' and request.user.is_authenticated: # If job app for this id exists, redirect to that job app page with a message if JobApplication.objects.filter(jobpost_id=int(jobpost_id)).exists(): existing = JobApplication.objects.get(jobpost_id=int(jobpost_id)) messages.add_message(request, messages.INFO, 'An application for this opening already exists.') return HttpResponseRedirect(reverse('taskmanager:jobapplication-detail', args=[existing.id])) jobapp = JobApplication(user=request.user, jobpost_id=int(jobpost_id), success_rate=50) jobapp.save() return HttpResponseRedirect(reverse('taskmanager:index'))
---问题是taskmanager中的所有其他链接都在工作,当您单击它们时,会打开正确的路径例如:-
- http://localhost:8000/taskmanager/jobpost/
- http://localhost:8000/taskmanager/jobpost/2/
- http://localhost:8000/taskmanager/company/2/
- http://localhost:8000/taskmanager/kpi/
【问题讨论】:
标签: django url http-status-code-404