|
Change #33688
2015-04-11
01:22:12
|
create
Calagator::Event
1250468220
RefreshPDX - Hello Web App: Learn How to Build a Web App with Python Django
Roll back
| description |
nil |
→ |
Join us for an afternoon workshop on 21 May 2015...
Have you ever wanted to build something from scratch that other people could use? There are tons of tutorials and instructions for writing your first website using HTML and CSS, but building something that interacts with the user — a full, complete web application — might feel unachievable and out of reach. Not so!
This workshop will walk you through creating a basic web app using Python and Django, from ideation to deployment. Set up your first web product with a database, registration and login forms, and perhaps get on the path to a fun side-project or future startup. Tailored for designers and non-programmers and taught by a designer.
What We'll Cover Installation of Python Django, and deploying your local web app. Setting up static files and templates to make it look like a real website. Creating a database schema. Setting up registration, login, and password recovery pages. Deployment on Heroku (if time allows).
Who Should AttendThis workshop is for those who are comfortable with HTML CSS and want to learn how to build a web app with Django.
What You Should KnowExperience with HTML and CSS is highly recommended. Very basic knowledge of programming concepts encouraged (variables/loops/etc — easy resources will be given before the workshop).
What to BringA laptop with your favorite text editor. If possible, a Mac or Linux system.
What to Expect A half-day of workshop learning! Coffee, Tea, and Snacks are provided by Refresh Portland! A copy (digital or physical) of Tracy's new book for each attendee! Other things that warrant an exclamation mark!
The workshop will begin at 1pm and end at 5pm. After the workshop is over, everyone who wants to join us will head to a nearby establishment for drink (alcoholic and non-alcoholic) on Refresh Portland.
About Tracy OsbornTracy Osborn is a designer, developer, and entreprenerd living in the Bay Area of California. She's the author of Hello Web App, teaching beginner web app development. Building websites since she was twelve, she always felt an affinity to computers, the internet, and what it brings us.
Tracy graduated with a BFA in Art Design with a concentration in Graphic Design from California Polytechnic State University, San Luis Obispo, and worked as a web designer for five years before teaching herself programming and launching her first startup, WeddingLovely. She's also an avid outdoorswoman and would love to go on a hike with you.
Follow Tracy on Twitter.
The Venue, IdealistThanks to Idealist for hosting us this month! Idealist is located at 209 SW Oak, Suite 101, Portland, OR, 97204.
Come on in the front door and go straight back, then left to the meeting room.
Have questions about RefreshPDX - Hello Web App: Learn How to Build a Web App with Python Django?
Contact Matthew Oliphant
Attendee List
Sort by: Date | First Name
No one has registered for this event yet.
#sort_container { font-weight: normal; float:right; font-size: 14px; float:right; text-decoration:none; cursor: pointer;}
#sort_option span {
color: #bababa;
}
#sort_option .sort_active {
font-weight: bold;
}
#track_event_container {
display: none;
}
Save This Event
Save This Event
Log in or sign up for Eventbrite to save events you're interested in.
Sign Up
Already have an account? Log in
Event Saved
When Where
Idealist
209 SW Oak
Suite 101
Portland,
OR 97204
Thursday, May 21, 2015 from 1:00 PM to 5:00 PM (PDT)
Add to my calendar
Outlook Calendar
Google Calendar
Yahoo! Calendar
iCal Calendar
Organizer
Matthew Oliphant
Contact the Organizer
View organizer profile
1
upcoming event on Eventbrite
18
past events on Eventbrite
Contact Organizer
Your message has been sent!
Your Name
Email Address
Message
Enter the code as shown below:
Your email will only be seen by the event organizer.
Find out more about how your privacy is protected.
Send message
Please wait...
Cancel
Close
Eventbrite
Use Eventbrite for event ticketing and online event registration
2015 Eventbrite
About
Terms
Privacy
Help Center
Cookie Policy
Already registered?
Get your tickets
Questions?
Contact the organizer
Please log in or sign up
In order to purchase these tickets in installments, you'll need an Eventbrite account. Log in or sign up for a free account to continue.
Log in
Sign up
EB.init({
mediaUrl: 'https://ebmedia.eventbrite.com/s3-build/610-rc2015-04-08_12.04-e2d0d33/',
ebServer: 'https://www.eventbrite.com',
ebDomain: 'eventbrite.com',
ebCurrentSchemeServer: 'https://www.eventbrite.com',
ebQueueServer: 'https://www.eventbrite.com',
url: "/e/refreshpdx\u002Dhello\u002Dweb\u002Dapp\u002Dlearn\u002Dhow\u002Dto\u002Dbuild\u002Da\u002Dweb\u002Dapp\u002Dwith\u002Dpython\u002Ddjango\u002Dtickets\u002D16513384979"
});
if (EB.Analytics) {
EB.Analytics.trackPendingInternalLink('MX');
}
define('eb/require_app_config', {
showRelatedEventsExpired: false,
showRelatedEventsLive: true,
correlationID: 'da1aa742e02311e489a822000b2901de',
sessionID: 'WxNqZZKnTF0FAQ3-2Zs_nQ',
bigEventID: '16513384979',
EBUserID: null,
FBAppID: '28218816837',
isPublic: true,
showSeatMap: false,
hasCustomHeader: false,
eventState: 30,
organizerId: 760843,
organizerName: "Matthew Oliphant",
isRepeating: false,
});
require(['mediatorjs'], function(mediatorjs) {
mediatorjs.set('feedbackOptions', {
/*jshint camelcase: false*/
el: '.js-feedback-form',
learnMoreURL: 'http://help.eventbrite.com/customer/en_us/portal/articles/1933338',
model: {
event_id: "16513384979",
user_id: "None",
feedback_type: 'related_events_feedback'
}
});
});
if (require) {require.config({baseUrl: "https://ebmedia.eventbrite.com/s3-build/610-rc2015-04-08_12.04-e2d0d33/django/js/require_built",waitSeconds: 15});} else {window.require = {baseUrl: "https://ebmedia.eventbrite.com/s3-build/610-rc2015-04-08_12.04-e2d0d33/django/js/require_built",waitSeconds: 15};}
defer>
var sharedRouter = new EB.Backbone.Router();
require(['eb/apps/event_page/mixpanel/config'], function(Config) {
Config.resolve({
'Event ID': '16513384979',
'Is Public': true,
'Reserved Seating': false,
ticketTypes: '',
'Organizer ID': 766168901,
'Event Type': 'Meeting or Networking Event',
'Event Topic': 'Other',
Capacity: '',
Quantity: '',
'Has Custom Header': false,
'Event State': 30,
'Repeating Event': false,
'Repeating V2 Event': false,
'Event Ticket Type':'Paid',
'Moflo' : false,
Currency: 'USD'
});
});
if (require) {require.config({baseUrl: "https://ebmedia.eventbrite.com/s3-build/610-rc2015-04-08_12.04-e2d0d33/django/js/require_built",waitSeconds: 15});} else {window.require = {baseUrl: "https://ebmedia.eventbrite.com/s3-build/610-rc2015-04-08_12.04-e2d0d33/django/js/require_built",waitSeconds: 15};}
defer>
(function($, EB) {
if (!(jQuery.browser.msie jQuery.browser.version === '6.0')) {
$.getScript('https://ebmedia.eventbrite.com/s3-build/610-rc2015-04-08_12.04-e2d0d33/django/js/production/event_tracking.js', function() {
EB.Facebook.ready(function() {
var eventTrackingRouter = new EB.EventTracking.Router({
FB: FB,
ebServer: 'https://www.eventbrite.com',
eventData: {"start_date_formatted":"May 21, 2015 1:00 PM PDT","start_date_month_short":"May","address_short":"209 SW Oak, Suite 101, Portland, OR","start_date_day_of_the_week":"Thu","id":16513384979,"categories":["Other","Meeting or Networking Event"],"category_name":"","name":"RefreshPDX - Hello Web App: Learn How to Build a Web App with Python \u0026 Django","url":"http://www.eventbrite.com/e/16513384979?aff=esv","start_date":1432238400000,"image_url":null,"repeats":false,"category_icon":""},
saveOnInit: EB.EventTracking.userClickedSave,
useLocalStorage: false,
fetchCount: true,
locale: 'en_US',
sharedRouter: sharedRouter,
});
EB.EventTracking.Analytics.init(
eventTrackingRouter,
{
'eventId': 16463993,
'internalReferrer': '7'
}
);
if (window.location.hash === '#view_list') {
Backbone.history.navigate('', { trigger: true });
} else {
eventTrackingRouter.index();
}
});
});
}
})(window.jQuery, window.EB);
(function($, EB) {
if (!(jQuery.browser.msie jQuery.browser.version === '6.0')) {
EB.namespace('EventTracking');
EB.EventTracking.userClickedSave = false;
$('#track_event').click(function(e) {
e.preventDefault();
EB.EventTracking.userClickedSave = true;
});
}
})(window.jQuery, window.EB);
if (Backbone.history !Backbone.History.started) {
Backbone.history.start();
}
require(['mediatorjs'], function(mediator) {
'use strict';
var googleMapConfig = {
'language' : 'en'
};
mediator.set('googleMapConfig', googleMapConfig);
});
if (require) {require.config({baseUrl: "https://ebmedia.eventbrite.com/s3-build/610-rc2015-04-08_12.04-e2d0d33/django/js/require_built",waitSeconds: 15});} else {window.require = {baseUrl: "https://ebmedia.eventbrite.com/s3-build/610-rc2015-04-08_12.04-e2d0d33/django/js/require_built",waitSeconds: 15};}
defer>
require(['jquery', 'mediatorjs'], function($, mediatorjs) {
var AuthAppConfig = {
el: $('#authentication-container'),
initialAuthAction: 'login',
locale: "en_US",
isPreRendered: false,
userAttributes: {"passwd":"","remember_me":true,"forward":"","email":"","referrer":""},
recaptchaPublicKey: "6LfbZr8SAAAAAKlolhfFS6RTWGhnjaGawWtkZkhP",
initialErrors: {},
referrer: "",
forward: "",
skipSplash: "",
skipStart: false,
enableAuthModal: true,
csrfToken: 'ln5RN09qfSdSFdkyPJJDJQ3aPaQ0hsDF',
signupPage: "",
userType: "",
userTypeSig: ""
};
mediatorjs.set('AuthAppConfig', AuthAppConfig);
});
EB.Facebook.init({
appId: '28218816837',
locale: 'en_US',
scope: 'email,friends_location',
internalReferrer: 3
});
new EB.EventPage.HeaderView({
el: '#global-header',
subtargets: 'header, .major',
createdDate: '2015-04-09 01:26:25',
allowHiddenHeader: false
});
EB.legacyEventsGATracker = {
config: {
actionAttribute: 'data-tracking-action',
labelAttribute: 'data-tracking-label',
classes: {
linkSelector: 'js-event-track'
}
},
defaultAttributes: {
'category': 'listing',
'dimensions': [
EB.Analytics.DIMENSIONS.EVENT_ID('16513384979'),
EB.Analytics.DIMENSIONS.EXPERIMENT_ID('OldListing')
]
},
defaultOrganizerAttributes: {
'label': 'Matthew Oliphant'
},
addEvents: function() {
$(document).on('click', '.' + this.config.classes.linkSelector, $.proxy(this.handleTrackedLink, this));
},
extractDataAttribute: function(attr, el){
var dataAttr = $(el).closest('.' + this.config.classes.linkSelector).attr(this.config[attr + 'Attribute']);
if(typeof dataAttr === "string") {
return dataAttr;
} else {
return false;
}
},
actionsLookUpTable: {
ViewOrgUpcomingEvents: 'getOrgEventAttr',
ContactOrgAttempt: 'getOrgEventAttr',
ViewOrgPastEvents: 'getOrgEventAttr',
ContactOrgCancel: 'getOrgEventAttr',
ViewOrgWebsite: 'getOrgEventAttr',
ViewOrgProfile: 'getOrgEventAttr',
ViewOrgTwitter: 'getOrgEventAttr',
ContactOrgSend: 'getOrgEventAttr',
FbConnect: 'getFBConnectAttr',
ViewOrgFb: 'getOrgEventAttr',
Share: 'getShareAttr'
},
init: function() {
this.addEvents();
},
track: function(attributes) {
if(attributes){
EB.Analytics.trackEvent(attributes);
}
},
handleTrackedLink: function(e){
this.callEvent(e.target);
},
callEvent: function(el){
var action = this.extractDataAttribute('action', el),
label = this.extractDataAttribute('label', el),
attributeMethod = this.actionsLookUpTable[action],
attributes = {};
if(attributeMethod){
attributes = this[attributeMethod](action, label);
}
this.track(attributes);
},
getFBConnectAttr: function(action) {
return $.extend({}, this.defaultAttributes, {'action': action});
},
getOrgEventAttr: function(action) {
return $.extend({}, this.defaultAttributes, this.defaultOrganizerAttributes, {'action': action});
},
getShareAttr: function(action, label) {
return $.extend({}, this.defaultAttributes, this.defaultOrganizerAttributes, {'action': action, 'label': label});
}
};
jQuery(function($){
EB.legacyEventsGATracker.init();
});
function handleLinkedinClick(){
EB.Social.linkedInPopup({
'url': $(this).attr('href')
});
}
function handleTwitterClick(){
EB.Social.twitterPopup({
'url': $(this).attr('href')
});
}
$('#social_module')
.on('click', '.linkedin_button', handleLinkedinClick)
.on('click', '.tweet_button', handleTwitterClick);
EB.Registration.init({
recaptcha_lang: 'en',
use_mfp: true,
qdata: {err: 'None'}
});
updateCheckout();
updateTracking();
EB.featureFlags = {
orderNowLock: true
};
EB.GoogleMap.init({
lat: '45.5209202',
lon: '-122.67331339999998',
zoom: '13',
language: 'en-us',
scheme: 'https://'
});
//
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.defer = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
var _gaq = _gaq || [];
//
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-141520-1', {'userId': 'de57256e_aa4495bfa57adf28271d9a1f8781fb9aed54554b6e77043f17109a8c34dc907162822615bb5dce3fc68a295f4999b2b2'}, {'allowLinker': true});
ga('set', 'forceSSL', true);
// We want to track some custom dimensions on the event pages
// For that, we first check if we are in an event page
if (typeof(require) != 'undefined') {
require(['mediatorjs', 'underscore', 'eb/analytics'], function(mediatorjs, _, Analytics) {
var isEvent = document.location.pathname.match('^/e\//*'),
isNewListing,
public_id,
dimensions = {};
Analytics.setInternalUseGACookie();
Analytics.trackPendingInternalLink('ebEventToTrack');
dimensions['dimension14'] = 'de57256e_aa4495bfa57adf28271d9a1f8781fb9aed54554b6e77043f17109a8c34dc907162822615bb5dce3fc68a295f4999b2b2';
// TODO: move these dimensions to the event pages instead of checking on every page.
if(isEvent){
public_id = 16513384979
isNewListing = $('body').hasClass('js-listing-page');
dimensions.dimension12 = public_id;
dimensions.dimension21 = isNewListing ? "NewListing" : "OldListing";
}
if (mediatorjs.get('GAPageviewDimensions')) {
dimensions = _.extend(dimensions, mediatorjs.get('GAPageviewDimensions'));
}
Analytics.trackPageView(dimensions);
});
} else {
// This is a temporary measure to tell whether or not require is ever failing.
// If this doesn't get hit, remove this if/else check
ga('send', 'pageview');
ga('send', {
'hitType': 'event',
'eventCategory': 'error',
'eventAction': 'require error',
'eventLabel': 'require not loaded at pageview time'
});
}
if (!!window.EB) {
EB.Analytics.init('de57256e_aa4495bfa57adf28271d9a1f8781fb9aed54554b6e77043f17109a8c34dc907162822615bb5dce3fc68a295f4999b2b2');
}
var gaEventName = 'RefreshPDX \u002D Hello Web App: Learn How to Build a Web App with Python \u0026amp\u003B Django';
var gaPagename = gaEventName;
adroll_adv_id = "HB24VVXCLVCZ5JYSJKZ6OC";
adroll_pix_id = "OLYYNVG2WJETJN24OFPJMG";
(function () {
var oldonload = window.onload;
window.onload = function(){
__adroll_loaded=true;
var scr = document.createElement("script");
var host = (("https:" == document.location.protocol) ? "https://s.adroll.com" : "http://a.adroll.com");
scr.setAttribute('async', 'true');
scr.type = "text/javascript";
scr.src = host + "/j/roundtrip.js";
((document.getElementsByTagName('head') || [null])[0] ||
document.getElementsByTagName('script')[0].parentNode).appendChild(scr);
if(oldonload){oldonload()}};
}());
window.EB = window.EB || {};
EB.TagManager = {
load: function(serviceName, domData) {
var url = '?event_id=16513384979path=%2Fe%2Frefreshpdx-hello-web-app-learn-how-to-build-a-web-app-with-python-django-tickets-16513384979organizer_uid=1099394#%7B%22debugging%22%3A%22off%22%2C%22site_region%22%3A%22en_US%22%2C%22event_id%22%3A%2216513384979%22%2C%22tealium_eb_partner_id%22%3A%22e658177f_5ac36fb8ad9af11a1f9e3df9f652f16ced5d40fbe2a3363f6d8cbc00cc15c0349ce3e45ddc537f273077d83c0a79166d%22%2C%22ensighten_eb_partner_id%22%3A%2261c35aa1_da8806b7b52873a41e0fb1a89ed8bcadba7926a0cfabda88623ad4f4bcfb25597db750ee08f0fee7696fc56f721eb5a0%22%2C%22environment%22%3A%22prod%22%2C%22event_name%22%3A%22RefreshPDX%20-%20Hello%20Web%20App%3A%20Learn%20How%20to%20Build%20a%20Web%20App%20with%20Python%20%5Cu0026amp%3B%20Django%22%2C%22page_ref%22%3A%22event%22%2C%22organizer_id%22%3A%22766168901%22%2C%22url_path%22%3A%22/e/refreshpdx-hello-web-app-learn-how-to-build-a-web-app-with-python-django-tickets-16513384979%22%2C%22organizer_uid%22%3A%221099394%22%7D',
iframe = document.createElement('iframe');
url = this.getCookies(url); // add cookies to url
if (domData){
url = this.addDomData(url, domData); // add extra domData to url
}
iframe.style.cssText = 'width:1px; height:1px; position: absolute; left:-99999px; border:none;';
iframe.sandbox = 'allow-same-origin allow-scripts allow-forms';
iframe.id = 'eb-tag-manager-' + serviceName;
iframe.src = '//eventbrite-pixels.s3.amazonaws.com/tag_manager/' + serviceName + '.html' + url;
document.body.appendChild(iframe);
},
addDomData: function(url, domData){
var domDataStr = JSON.stringify(domData);
var updatedDomData = encodeURIComponent(domDataStr);
return url.substring(0, url.length - 3) + '%2C' + updatedDomData.substring(3, updatedDomData.length);
},
getCookies: function(url){
var cookieHash = this.removeBlackListCookies();
return this.addDomData(url, {'cookieHash': cookieHash });
},
cookieCutter: function(key, cookieStr){
// match the cookie key value using just the key
// if cookieStr was 'testKey1=testValue1; testKey2=testValue2; testKey3=testValue3;'
// and key was 'testKey2'
// lookup would return 'testKey2=testValue2;'
var regEx = new RegExp("(?:(?:^|.*;)\\s*(" + key + ")(\\s*\\=\\s*)([^\\s*]*).*$)|^.*$");
var lookup = cookieStr.replace(regEx, "$1$2$3");
return cookieStr.replace(lookup,'');
},
removeBlackListCookies: function(){
var blackList = ['csrftoken', 'experiments_enrolled', 'ebGAClientId', 'janus', 'G'],
cookieStr = document.cookie;
for (var i = 0; i blackList.length; i++) {
cookieStr = this.cookieCutter(blackList[i], cookieStr);
}
// remove white space before return becasue it is better for trasportation
return cookieStr.replace(/; +(?=)/g,';');
}
};
$(function() {
EB.TagManager.load('ensighten', false);
});
|
| id |
nil |
→ |
1250468220 |
| source_id |
nil |
→ |
996335316 |
| start_time |
nil |
→ |
2015-05-21 13:00:00 -0700 |
| title |
nil |
→ |
RefreshPDX - Hello Web App: Learn How to Build a Web App with Python Django |
| url |
nil |
→ |
http://www.eventbrite.com/o/matthew-oliphant-766168901?s=36584979 |
| venue_id |
nil |
→ |
202394917 |
|