· 7 years ago · May 14, 2018, 11:14 AM
1"""
2Django settings for tutorial project.
3
4Generated by 'django-admin startproject' using Django 2.0.2.
5
6For more information on this file, see
7https://docs.djangoproject.com/en/2.0/topics/settings/
8
9For the full list of settings and their values, see
10https://docs.djangoproject.com/en/2.0/ref/settings/
11"""
12
13import os
14
15# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
16BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
17
18
19# Quick-start development settings - unsuitable for production
20# See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/
21
22# SECURITY WARNING: keep the secret key used in production secret!
23SECRET_KEY = 'tw)pqpbi)r_z1lr0j#h1m6m)wy*8b+4-iorw#%-t3#x)6wuv8$'
24
25# SECURITY WARNING: don't run with debug turned on in production!
26DEBUG = True
27
28ALLOWED_HOSTS = []
29
30
31# Application definition
32
33INSTALLED_APPS = [
34 'accounts',
35
36 'django.contrib.admin',
37 'django.contrib.auth',
38 'django.contrib.contenttypes',
39 'django.contrib.sessions',
40 'django.contrib.messages',
41 'django.contrib.staticfiles',
42]
43
44MIDDLEWARE_CLASSES = [
45 'django.middleware.security.SecurityMiddleware',
46 'django.contrib.sessions.middleware.SessionMiddleware',
47 'django.middleware.common.CommonMiddleware',
48 'django.middleware.csrf.CsrfViewMiddleware',
49 'django.contrib.auth.middleware.AuthenticationMiddleware',
50 'django.contrib.messages.middleware.MessageMiddleware',
51 'django.middleware.clickjacking.XFrameOptionsMiddleware',
52 'tutorial.middleware.LoginRequiredMiddleware'
53]
54
55ROOT_URLCONF = 'tutorial.urls'
56
57TEMPLATES = [
58 {
59 'BACKEND': 'django.template.backends.django.DjangoTemplates',
60 'DIRS': [],
61 'APP_DIRS': True,
62 'OPTIONS': {
63 'context_processors': [
64 'django.template.context_processors.debug',
65 'django.template.context_processors.request',
66 'django.contrib.auth.context_processors.auth',
67 'django.contrib.messages.context_processors.messages',
68 ],
69 },
70 },
71]
72
73WSGI_APPLICATION = 'tutorial.wsgi.application'
74
75
76# Database
77# https://docs.djangoproject.com/en/2.0/ref/settings/#databases
78
79DATABASES = {
80 'default': {
81 'ENGINE': 'django.db.backends.sqlite3',
82 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
83 }
84}
85
86
87# Password validation
88# https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators
89
90AUTH_PASSWORD_VALIDATORS = [
91 {
92 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
93 },
94 {
95 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
96 },
97 {
98 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
99 },
100 {
101 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
102 },
103]
104
105
106# Internationalization
107# https://docs.djangoproject.com/en/2.0/topics/i18n/
108
109LANGUAGE_CODE = 'en-us'
110
111TIME_ZONE = 'UTC'
112
113USE_I18N = True
114
115USE_L10N = True
116
117USE_TZ = True
118
119
120# Static files (CSS, JavaScript, Images)
121# https://docs.djangoproject.com/en/2.0/howto/static-files/
122
123STATIC_URL = '/static/'
124
125LOGIN_REDIRECT_URL = '/account/'
126
127
128
129EMAIL_HOST = 'localhost'
130EMAIL_PORT = 1025
131
132LOGIN_EXEMPT_URLS = (
133 r'^accounts/logout/$',
134 r'^accounts/register/$',
135
136)
137
138from django.contrib import admin
139from django.conf.urls import url,include
140from tutorial import views
141#from django.urls import path
142
143urlpatterns = [
144 url('admin/', admin.site.urls),
145 url('accounts/',include('accounts.urls')),
146 url(r'^$',views.login_redirect,name="login_redirect"),
147]
148
149from django.conf import settings
150from django.shortcuts import redirect
151import re
152
153EXEMPT_URLS = [re.compile(settings.LOGIN_URL.lstrip('/'))]
154if hasattr(settings, 'LOGIN_EXEMPT_URLS'):
155 EXEMPT_URLS +=[re.compile(url) for url in settings.LOGIN_EXEMPT_URLS]
156
157class LoginRequiredMiddleware:
158 def __init__(self, get_response):
159 self.get_response = get_response
160 def __call__(self,request):
161 response = self.get_response
162 return redirect
163 def process_view (self, request, view_func, view_args, view_kwargs):
164 assert hasattr(request, 'user')
165 path = request.path_info.lstrip('/')
166
167 if not user.is_authenticated():
168 if not any(url.match(path) for url in EXEMPT_URLS):
169 return redirec(settings.LOGIN_URL)
170
171from django.shortcuts import render,redirect
172from django.http import HttpResponse
173from django.contrib.auth.forms import UserCreationForm
174from tutorial import views
175from accounts.form import Registrationform,EditProfileForm
176from django.contrib.auth.forms import UserChangeForm,PasswordChangeForm
177from django.contrib.auth.models import User
178from django.contrib.auth import update_session_auth_hash
179from django.contrib.auth.decorators import login_required
180
181# Create your views here.
182@login_required
183def home(request):
184 numbers=[1,2,3,4,5]
185 name="jay"
186 args={'myName':name}
187
188 return render(request,'accounts/home.html',args)
189def register(request):
190 if request.method == "POST":
191 form = Registrationform(request.POST)
192 if form.is_valid():
193 form.save()
194 return redirect('/accounts')
195 else:
196 return HttpResponse('please fill all the fields and make sure new password must be match')
197 else:
198 form = Registrationform()
199 args={'form' : form}
200 return render(request,'accounts/reg_form.html',args)
201@login_required
202def view_profile(request):
203 args = {'user' : request.user}
204 return render(request,'accounts/profile.html',args)
205@login_required
206def edit_profile(request):
207 if request.user.is_authenticated():
208 #<p>Welcome, {{ user.username }}. Thanks for logging in.</p>
209 if request.method=="POST":
210 form = EditProfileForm(request.POST,instance=request.user)
211 if form.is_valid():
212 form.save()
213 return redirect('/accounts/profile')
214 else:
215 return HttpResponse("please go back and write correct vaues")
216 else:
217 form = EditProfileForm(instance=request.user)
218 args = {'form' : form}
219 return render(request,'accounts/edit_profile.html',args)
220 else:
221 HttpResponse("hllo")
222 return redirect('/accounts/login')
223@login_required
224def change_password(request):
225 if request.user.is_authenticated():
226 if request.method == "POST":
227 form = PasswordChangeForm(data=request.POST,user=request.user)
228 if form.is_valid():
229 form.save()
230 update_session_auth_hash(request, form.user)
231 return redirect('/accounts/profile')
232 else:
233 return HttpResponse("password does not match,go back and try again")
234 else:
235 form = PasswordChangeForm(user=request.user)
236 args = {'form' : form}
237 return render(request,'accounts/change_password.html',args)
238 else:
239 return redirect ('/accounts/login')