0
votes

I have no idea why i have error saying "Reverse for 'lscholarship' not found. 'lscholarship' is not a valid view function or pattern name." when i am trying to run http://127.0.0.1:8000/hrfinance/home/. Inside my views.py, i have already defined scholarship instead of lscholarship and i wrote views.scholarship in my urls.py.

base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %} Title {% endblock %}</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    {% block link %}
    {% endblock %}
</head>

<body>
{% block body %}
{% endblock %}
</body>
</html>

views.py

def scholarship(request, id=None):
    query_results = []
    if request.POST.get('delete'):
        Scholarship.objects.filter(id__in=request.POST.getlist('item')).delete()
        return redirect('/hrfinance/lscholarship/')

    elif request.POST.get('add'):
        form = ScholarshipForm(request.POST)
        if form.is_valid():
            scholarship = form.save(commit=False)
            scholarship.save()
            return redirect('/hrfinance/lscholarship/')
    else:
        form = ScholarshipForm()
    id = request.GET.get('scholarship')
    query_results = Scholarship.objects.all()
    data = {
         'query_results':query_results,
         'form':form
       }
    return render(request, 'hrfinance/add_remove_scholarship.html', data)

urls.py

urlpatterns = [
    url(r'^home/$', views.home, name='home'),
    #timesheet to be filled up by students
    url(r'^timesheet/$', views.timesheet, name='timesheet'),
    #list of timesheets under 'View Timesheet'
    url(r'^ltimesheet/$', views.ltimesheet, name='ltimesheet'),
    #list of applications under 'View Application'
    url(r'^lapplication/$', views.lapplication, name='lapplication'),
    #list of scholarships under 'Add/Remove Scholarship'
    url(r'^lscholarship/$', views.scholarship, name='lscholarship'),
    url(r'^base/$', views.base, name='base'),
]

below is the traceback:

Environment:

Request Method: GET Request URL: http://127.0.0.1:8000/hrfinance/home/

Django Version: 1.11.1 Python Version: 2.7.13 Installed Applications: ['hrfinance.apps.HRFinanceConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware']

Template error: In template D:\curtin\year3 SEM 2\XiMing_2Jul\myHDR\hrfinance\templates\hrfinance\base.html, error at line 0 Reverse for 'lscholarship' not found. 'lscholarship' is not a valid view function or pattern name. 1 : 2 : 3 : 4 : 5 : {% block title %} Title {% endblock %} 6 :

7 : {% block link %} 8 : {% endblock %} 9 :
10 :

Traceback:

File "C:\Python27\lib\site-packages\django\core\handlers\exception.py" in inner 41. response = get_response(request)

File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _get_response 187. response = self.process_exception_by_middleware(e, request)

File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _get_response 185. response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "D:\curtin\year3 SEM 2\XiMing_2Jul\myHDR\hrfinance\views.py" in home 11. return render(request, 'hrfinance/home.html')

File "C:\Python27\lib\site-packages\django\shortcuts.py" in render 30. content = loader.render_to_string(template_name, context, request, using=using)

File "C:\Python27\lib\site-packages\django\template\loader.py" in render_to_string 68. return template.render(context, request)

File "C:\Python27\lib\site-packages\django\template\backends\django.py" in render 66. return self.template.render(context)

File "C:\Python27\lib\site-packages\django\template\base.py" in render 207. return self._render(context)

File "C:\Python27\lib\site-packages\django\template\base.py" in _render 199. return self.nodelist.render(context)

File "C:\Python27\lib\site-packages\django\template\base.py" in render 990. bit = node.render_annotated(context)

File "C:\Python27\lib\site-packages\django\template\base.py" in render_annotated 957. return self.render(context)

File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in render 177. return compiled_parent._render(context)

File "C:\Python27\lib\site-packages\django\template\base.py" in _render 199. return self.nodelist.render(context)

File "C:\Python27\lib\site-packages\django\template\base.py" in render 990. bit = node.render_annotated(context)

File "C:\Python27\lib\site-packages\django\template\base.py" in render_annotated 957. return self.render(context)

File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in render 72. result = block.nodelist.render(context)

File "C:\Python27\lib\site-packages\django\template\base.py" in render 990. bit = node.render_annotated(context)

File "C:\Python27\lib\site-packages\django\template\base.py" in render_annotated 957. return self.render(context)

File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in render 458. url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)

File "C:\Python27\lib\site-packages\django\urls\base.py" in reverse 91. return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))

File "C:\Python27\lib\site-packages\django\urls\resolvers.py" in _reverse_with_prefix 497. raise NoReverseMatch(msg)

Exception Type: NoReverseMatch at /hrfinance/home/ Exception Value: Reverse for 'lscholarship' not found. 'lscholarship' is not a valid view function or pattern name.

project urls.py

from django.conf.urls import url
from django.contrib import admin
from django.conf.urls import include
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    url(r'^admin/', admin.site.urls),

url(r'^hrfinance/', include('hrfinance.urls', namespace='hrfinance')),]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root = settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
1
Please post your base.html also - Arpit Svt
@ArpitSvt I have updated my question to include base.html - user5466566
Please post hrfinance/home.html' also - Arpit Svt
Also post your project urls.py - zaidfazil
@zaidfazil i have edited my question to include project urls.py - user5466566

1 Answers

0
votes

Try redirect() method like this in views,

return redirect('hrfinance:lscholarship')

instead of,

return redirect('/hrfinance/lscholarship/')

assuming your project urls.py contains,

url(r'^hrfinance/', include('hrfinance.urls', namespace='hrfinance')),

EDIT

change your urlpattern,

url(r'^lscholarship/(?P<id>\d+)/$', views.scholarship, name='lscholarship'),