\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{Ibrahim Omar} \pdfinfo{ /Title (writing-your-first-django-app.pdf) /Creator (Cheatography) /Author (Ibrahim Omar) /Subject (Writing your first Django app Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{1F47A3} \definecolor{LightBackground}{HTML}{F1F3F9} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Writing your first Django app Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{Ibrahim Omar} via \textcolor{DarkBackground}{\uline{cheatography.com/58047/cs/15380/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}Ibrahim Omar \\ \uline{cheatography.com/ibrahim-omar} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 6th April, 2018.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{tabularx}{17.67cm}{x{7.5988 cm} x{9.6712 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{part 1}} \tn % Row 0 \SetRowColor{LightBackground} python -m django -{}-version & You can tell Django is installed and which version \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} django-admin startproject mysite & Creating a project \tn % Row Count 5 (+ 2) % Row 2 \SetRowColor{LightBackground} python manage.py startapp polls & Creating the Polls app \tn % Row Count 7 (+ 2) % Row 3 \SetRowColor{white} url() argument: regex & Note that these regular expressions do not search GET and POST parameters, or the domain name. For example, in a request to \seqsplit{https://www.example.com/myapp/}, the URLconf will look for myapp/. In a request to \seqsplit{https://www.example.com/myapp/?page=3}, the URLconf will also look for myapp/. \tn % Row Count 20 (+ 13) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{8.4623 cm} x{8.8077 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{part 2}} \tn % Row 0 \SetRowColor{LightBackground} python manage.py migrate & looks at the INSTALLED\_APPS setting and creates any necessary database tables according to the database settings in your mysite/settings.py file and the database migrations shipped with the app (we'll cover those later). You'll see a message for each migration it applies. \tn % Row Count 14 (+ 14) % Row 1 \SetRowColor{white} python manage.py makemigrations polls & you're telling Django that you've made some changes to your models (in this case, you've made new ones) and that you'd like the changes to be stored as a migration. \tn % Row Count 23 (+ 9) % Row 2 \SetRowColor{LightBackground} python manage.py sqlmigrate polls 0001 & The sqlmigrate command takes migration names and returns their SQL: \tn % Row Count 27 (+ 4) % Row 3 \SetRowColor{white} python manage.py check & this checks for any problems in your project without making migrations or touching the database. \tn % Row Count 32 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{5.5264 cm} x{11.7436 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{part 3}} \tn % Row 0 \SetRowColor{LightBackground} ?P\textless{}pk\textgreater{} & is a Python extension to the standard regex syntax. It means assign the results of this group (bounded by parens) to the variable name inside. In this case, assign the regex result to \seqsplit{pk.https://teamtreehouse.com/community/help-me-understand-ppk} \tn % Row Count 10 (+ 10) % Row 1 \SetRowColor{white} The template system & The template system uses dot-lookup syntax to access variable attributes. \tn % Row Count 13 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{8.4623 cm} x{8.8077 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{part 4}} \tn % Row 0 \SetRowColor{LightBackground} forloop.counter & indicates how many times the for tag has gone through its loop \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} except (KeyError, \seqsplit{Choice.DoesNotExist)} & \seqsplit{https://stackoverflow}.com/a/18785197/6740377 \tn % Row Count 7 (+ 3) % Row 2 \SetRowColor{LightBackground} \seqsplit{HttpResponseRedirect} & takes a single argument: the URL to which the user will be redirected\# Always return an \seqsplit{HttpResponseRedirect} after successfully dealing \# with POST data. This prevents data from being posted twice if a \# user hits the Back button. \tn % Row Count 20 (+ 13) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \end{document}