sample web registration in python
- import web
- # Init our application, this is just about the most basic setup
- render = web.template.render('/var/www/templates/')
- urls = ('/', 'Index')
- app = web.application(urls, globals())
- class Index:
- # Create a basic form shared by the class methods
- def __init__(self):
- self.registerForm = web.form.Form(
- # We're adding some fields and a submit button
- # Each field has a validator, which verifies its correctness
- # In this case we check if the field is not null
- # Other attributes are available: description, id, HTML class name, etc
- # See http://webpy.org/form for reference
- web.form.Textbox('username', web.form.notnull, description='User name'),
- web.form.Password('password', web.form.notnull, description='Password'),
- web.form.Password('repeat_password', web.form.notnull,
- description='Repeat password'),
- web.form.Button('Register'),
- # Whole forms can have validators, too
- # Here, we check if password fields have the same content
- validators = [web.form.Validator("Passwords didn't match.", lambda i:
- i.password == i.repeat_password)]
- )
- # GET method is used when there is no form data sent to the server
- def GET(self):
- form = self.registerForm()
- return render.form(content=form)
- # POST method carries form data
- def POST(self):
- # Notice how flawlessly web.py form works, receiving all the data for us
- form = self.registerForm()
- if(not form.validates()):
- return render.form(content=form)
- else:
- return "Form successfuly sent! Username: %s, password: %s" % \
- (form.d.username, form.d.password)
- application = app.wsgifunc()
- if __name__=="__main__":
- app.run()
- user.py
- # Django settings for app project.
- # Import the os.path module for doing manipulation with file paths.
- import os.path
- DEBUG = True
- TEMPLATE_DEBUG = DEBUG
- ADMINS = (
- # ('Your Name', 'your_email@example.com'),
- )
- MANAGERS = ADMINS
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.sqlite3', # # Using sqlite3
- 'NAME': '/var/www/mydb', # Absolute path to the database file
- # The following settings are not used with sqlite3:
- 'USER': '',
- 'PASSWORD': '',
- 'HOST': '', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
- 'PORT': '', # Set to empty string for default.
- }
- }
- # Hosts/domain names that are valid for this site; required if DEBUG is False
- # See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts
- ALLOWED_HOSTS = []
- # Local time zone for this installation. Choices can be found here:
- # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
- # although not all choices may be available on all operating systems.
- # In a Windows environment this must be set to your system time zone.
- TIME_ZONE = 'America/Los_Angeles'
- # Language code for this installation. All choices can be found here:
- # http://www.i18nguy.com/unicode/language-identifiers.html
- LANGUAGE_CODE = 'en-us'
- SITE_ID = 1
- # If you set this to False, Django will make some optimizations so as not
- # to load the internationalization machinery.
- USE_I18N = True
- # If you set this to False, Django will not format dates, numbers and
- # calendars according to the current locale.
- USE_L10N = True
- # If you set this to False, Django will not use timezone-aware datetimes.
- USE_TZ = True
- # Absolute filesystem path to the directory that will hold user-uploaded files.
- # Example: "/var/www/example.com/media/"
- MEDIA_ROOT = ''
- # URL that handles the media served from MEDIA_ROOT. Make sure to use a
- # trailing slash.
- # Examples: "http://example.com/media/", "http://media.example.com/"
- MEDIA_URL = ''
- # Absolute path to the directory static files should be collected to.
- # Don't put anything in this directory yourself; store your static files
- # in apps' "static/" subdirectories and in STATICFILES_DIRS.
- # Example: "/var/www/example.com/static/"
- STATIC_ROOT = '/var/www/app/static/'
- # URL prefix for static files.
- # Example: "http://example.com/static/", "http://static.example.com/"
- STATIC_URL = '/static/'
- # Additional locations of static files
- STATICFILES_DIRS = (
- # Put strings here, like "/home/html/static" or "C:/www/django/static".
- # Always use forward slashes, even on Windows.
- # Don't forget to use absolute paths, not relative paths.
- )
- # List of finder classes that know how to find static files in
- # various locations.
- STATICFILES_FINDERS = (
- 'django.contrib.staticfiles.finders.FileSystemFinder',
- 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
- # 'django.contrib.staticfiles.finders.DefaultStorageFinder',
- )
- # Make this unique, and don't share it with anybody.
- SECRET_KEY = 'vw7__ve*_3j^edw+@9k9(24_efqjnul-k=84yis*ew$xstr&*!'
- # List of callables that know how to import templates from various sources.
- TEMPLATE_LOADERS = (
- 'django.template.loaders.filesystem.Loader',
- 'django.template.loaders.app_directories.Loader',
- # 'django.template.loaders.eggs.Loader',
- )
- MIDDLEWARE_CLASSES = (
- 'django.middleware.common.CommonMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
- # Uncomment the next line for simple clickjacking protection:
- # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
- )
- ROOT_URLCONF = 'app.urls'
- # Python dotted path to the WSGI application used by Django's runserver.
- WSGI_APPLICATION = 'app.wsgi.application'
- TEMPLATE_DIRS = (
- # Include the "templates" directory in the current directory.
- os.path.join(os.path.dirname(__file__), "templates"),
- # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
- # Always use forward slashes, even on Windows.
- # Don't forget to use absolute paths, not relative paths.
- )
- INSTALLED_APPS = (
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.sites',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- 'captcha', # Include the django-simple-captcha application
- 'registration', # Include the registration
- # Uncomment the next line to enable the admin:
- # 'django.contrib.admin',
- # Uncomment the next line to enable admin documentation:
- # 'django.contrib.admindocs',
- )
- # A sample logging configuration. The only tangible logging
- # performed by this configuration is to send an email to
- # the site admins on every HTTP 500 error when DEBUG=False.
- # See http://docs.djangoproject.com/en/dev/topics/logging for
- # more details on how to customize your logging configuration.
- LOGGING = {
- 'version': 1,
- 'disable_existing_loggers': False,
- 'filters': {
- 'require_debug_false': {
- '()': 'django.utils.log.RequireDebugFalse'
- }
- },
- 'handlers': {
- 'mail_admins': {
- 'level': 'ERROR',
- 'filters': ['require_debug_false'],
- 'class': 'django.utils.log.AdminEmailHandler'
- }
- },
- 'loggers': {
- 'django.request': {
- 'handlers': ['mail_admins'],
- 'level': 'ERROR',
- 'propagate': True,
- },
- }
- }