diff --git a/gms/memberdb/static/login.css b/gms/memberdb/static/login.css
new file mode 100644
index 0000000000000000000000000000000000000000..f8d64044b88604b1ad95008df3e20c4d48da67a0
--- /dev/null
+++ b/gms/memberdb/static/login.css
@@ -0,0 +1,78 @@
+/* LOGIN FORM stolen from Django admin */
+
+body.login {
+    background: #f8f8f8;
+}
+
+.login #header {
+    height: auto;
+    padding: 5px 16px;
+}
+
+.login #header h1 {
+    font-size: 18px;
+}
+
+.login #header h1 a {
+    color: #fff;
+}
+
+.login #content {
+    padding: 20px 20px 0;
+}
+
+.login #container {
+    background: #fff;
+    border: 1px solid #eaeaea;
+    border-radius: 4px;
+    overflow: hidden;
+    width: 28em;
+    min-width: 300px;
+    margin: 100px auto;
+}
+
+.login #content-main {
+    width: 100%;
+}
+
+.login .form-row {
+    padding: 4px 0;
+    float: left;
+    width: 100%;
+    border-bottom: none;
+}
+
+.login .form-row label {
+    padding-right: 0.5em;
+    line-height: 2em;
+    font-size: 1em;
+    clear: both;
+    color: #333;
+}
+
+.login .form-row #id_username, .login .form-row #id_password {
+    clear: both;
+    padding: 8px;
+    width: 100%;
+    -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+            box-sizing: border-box;
+}
+
+.login span.help {
+    font-size: 10px;
+    display: block;
+}
+
+.login .submit-row {
+    clear: both;
+    padding: 1em 0 0 9.4em;
+    margin: 0;
+    border: none;
+    background: none;
+    text-align: left;
+}
+
+.login .password-reset-link {
+    text-align: center;
+}
diff --git a/gms/memberdb/templates/login.html b/gms/memberdb/templates/login.html
new file mode 100644
index 0000000000000000000000000000000000000000..d9149897f00380acfb8ba621466657ce57faf980
--- /dev/null
+++ b/gms/memberdb/templates/login.html
@@ -0,0 +1,56 @@
+{% extends "base.html" %}
+{% load static %}
+
+{% block title %}UCC Member Login{% endblock %}
+
+{% block extrahead %}
+{{ block.super }}
+<link rel="stylesheet" type="text/css" href="{% static "login.css" %}">
+{{ form.media }}
+{% endblock %}
+
+{% block content_title %}<h1>Login to MemberDB</h1>{% endblock %}
+
+{% block content %}
+
+<div class="form-container">
+
+{% if form.errors and not form.non_field_errors %}
+<p class="errornote">
+{% if form.errors.items|length == 1 %}Please correct the error below.{% else %}Please correct the errors below.{% endif %}
+</p>
+{% endif %}
+
+{% if form.non_field_errors %}
+{% for error in form.non_field_errors %}
+<p class="errornote">
+    {{ error }}
+</p>
+{% endfor %}
+{% endif %}
+
+{% if user.is_authenticated %}
+<p class="errornote">
+    You are authenticated as {{ user.username }}, but are not authorized to
+    access this page. Would you like to login to a different account?
+</p>
+{% endif %}
+
+<form action="{% url 'memberdb:login' %}" method="post" id="login-form">
+  {% csrf_token %}
+  <div class="form-row">
+    {{ form.username.errors }}
+    {{ form.username.label_tag }} {{ form.username }}
+  </div>
+  <div class="form-row">
+    {{ form.password.errors }}
+    {{ form.password.label_tag }} {{ form.password }}
+    <input type="hidden" name="next" value="{{ next }}">
+  </div>
+  <div class="submit-row">
+    <label>&nbsp;</label><input type="submit" value="Log in">
+  </div>
+</form>
+</div>
+
+{% endblock %}
\ No newline at end of file
diff --git a/gms/memberdb/urls.py b/gms/memberdb/urls.py
index 17798672b0eed87f7e75240678cb89c01d070af3..1cb8edf6441f47a15490a51fdaee0fc885c658d1 100644
--- a/gms/memberdb/urls.py
+++ b/gms/memberdb/urls.py
@@ -1,13 +1,16 @@
 from django.urls import path
+from django.contrib.auth import views as auth_views
 
 from . import views
-from .register import RegisterView
+from .register import RegisterView, RenewView
 
 app_name = 'memberdb'
 urlpatterns = [
     path('', views.index, name='index'),
+    path('login/', auth_views.LoginView.as_view(template_name='login.html'), name='login'),
     path('register/', RegisterView.as_view(), name='register'),
-    path('renew/', views.renew, name='renew'),
-    path('renew/<str:username>/', views.renew, name='renew'),
-    path('<str:username>/', views.info, name='info'),
+    path('renew/', RenewView.as_view(), name='renew'),
+    path('home/', views.index, name='home'),
+    path('active/', views.getactive, name='actives'),
+    #path('<str:username>/', views.info, name='info'),
 ]
\ No newline at end of file