ohjuny
ohjuny

Reputation: 481

Django Linking a html page to a view

So I know that there are other people who have asked the same question, and I have read through them. However, the solutions provided there are giving me a strange error, and I would appreciate any help in understanding it.

So here's my home.html file:

<head>
    <title>Home</title>
</head>
<body>
    <h1>Home Page</h1>
    <!-- <a href="/home/signup">Sign Up</a> -->
    <a href="{% url 'signup' %}">Sign Up</a>
</body>

And here's my views.py:

from django.shortcuts import render

# Create your views here.
def home(request):
    return render(request, "home.html")

def signup(request):
    return render(request, "signup.html")

And here's my urls.py:

from django.conf.urls import url
from .views import home, signup

urlpatterns = [
    url(r'^signup/', signup, name="signup"),
    url(r'^', home, name="home"),
]

Thank you for all the help :)

Edit: The error message is

Reverse for 'signup' not found. 'signup' is not a valid view function or pattern name.

Also I actually changed the way I did urls.py. Now, I only have one urls.py in my main mysite folder:

from django.conf.urls import url, include
from django.contrib import admin

from home import views
from accounts import views as accountsViews

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

    url(r'^home/', views.home),
    url(r'^signup', accountsViews.signup),
]

Upvotes: 3

Views: 3631

Answers (1)

Jeffrey Chidi
Jeffrey Chidi

Reputation: 351

Your second url in 'urls.py' does not have a name.

The url tags would not be able to find them by name -- '{% url 'signup' %}'

Upvotes: 1

Related Questions