[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"navigation":3,"url-settings":86,"blog-\u002Fblog\u002Fstreamlining-azure-django-deployment":671,"blog-author-\u002Fblog\u002Fstreamlining-azure-django-deployment":1273,"i-material-symbols:arrow-back-rounded":1288},{"id":4,"extension":5,"footer":6,"header":73,"meta":83,"stem":84,"__hash__":85},"navigation\u002Fdata\u002Fshared\u002Fnavigation.yml","yml",{"brand":7,"columns":13,"legal":63},{"name":8,"tagline":9,"downloadCta":10},"Pieces","The memory layer for modern work.",{"label":11,"href":12},"All downloads","\u002Fdownloads",[14,26,39,51],{"title":15,"links":16},"Product",[17,20,23],{"label":18,"href":19},"Pieces Desktop","\u002F",{"label":21,"href":22},"Pieces Enterprise","\u002Fenterprise",{"label":24,"href":25},"Pieces MCP","\u002Fmcp",{"title":27,"links":28},"Resources",[29,33,36],{"label":30,"href":31,"external":32},"Documentation","url:docs.home",true,{"label":34,"href":35},"Blog","\u002Fblog",{"label":37,"href":38,"external":32},"GitHub","url:github.org",{"title":40,"links":41},"Community",[42,45,48],{"label":43,"href":44,"external":32},"Discord","url:social.discord",{"label":46,"href":47,"external":32},"X \u002F Twitter","url:social.x",{"label":49,"href":50,"external":32},"LinkedIn","url:social.linkedin",{"title":52,"links":53},"Company",[54,57,60],{"label":55,"href":56},"About","\u002Fabout",{"label":58,"href":59},"Updates","\u002Fupdates",{"label":61,"href":62},"Contact","\u002Fcontact",[64,67,70],{"label":65,"href":66},"Privacy Policy","\u002Flegal\u002Fprivacy",{"label":68,"href":69},"Refund Policy","\u002Flegal\u002Frefund",{"label":71,"href":72},"Terms of Service","\u002Flegal\u002Fterms",{"links":74,"signIn":75,"contact":78,"cta":80},[],{"label":76,"href":77},"Manage account","url:portal.home",{"label":79,"href":62},"Get in touch",{"label":81,"href":82},"Download","url:routes.downloads",{},"data\u002Fshared\u002Fnavigation","XlSALC7vYCXHcmcXnjJViwIZKsqnQWF4bn4o9RrcSBE",{"id":87,"extension":5,"links":88,"meta":668,"stem":669,"__hash__":670},"urlSettings\u002Fdata\u002Fshared\u002Furls.yml",[89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280,284,288,292,296,300,303,307,311,314,318,322,326,330,334,338,342,346,350,354,358,362,366,370,374,378,382,386,390,394,398,402,406,410,414,418,422,426,430,434,438,442,446,450,454,458,461,465,469,473,477,481,485,488,491,494,497,501,505,508,512,516,520,524,528,532,536,540,544,548,552,556,559,563,567,571,575,579,582,585,588,592,595,599,603,607,611,614,618,622,625,628,631,635,639,643,646,649,652,656,660,664],{"key":90,"label":91,"href":92},"downloads.desktop","Desktop download page","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fdownload",{"key":94,"label":95,"href":96},"downloads.macOS.dmgArm64","macOS DMG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fdmg-arm64\u002Fdownload",{"key":98,"label":99,"href":100},"downloads.macOS.dmgIntel","macOS DMG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fdmg\u002Fdownload",{"key":102,"label":103,"href":104},"downloads.macOS.pkg","macOS PKG","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg\u002Fdownload",{"key":106,"label":107,"href":108},"downloads.macOS.universal","Desktop macOS Universal","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fmacos-universal\u002Fdownload",{"key":110,"label":111,"href":112},"downloads.macOS.pkgArm64","Desktop macOS PKG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pfd-arm64\u002Fdownload",{"key":114,"label":115,"href":116},"downloads.macOS.pkgIntel","Desktop macOS PKG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pfd\u002Fdownload",{"key":118,"label":119,"href":120},"downloads.windows.appinstaller","Windows App Installer","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fappinstaller\u002Fpieces_for_x.appinstaller",{"key":122,"label":123,"href":124},"downloads.windows.exe","Windows EXE","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fwindows-exe\u002Fdownload",{"key":126,"label":127,"href":128},"downloads.windows.msix","Windows MSIX","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fwindows-msix\u002Fdownload",{"key":130,"label":131,"href":132},"downloads.windows.suiteManager","Windows Suite Manager","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_suite_windows\u002Fappinstaller\u002Fdownload",{"key":134,"label":135,"href":136},"downloads.linux.flatpakRepo","Linux Flatpak repository","https:\u002F\u002Fbuilds.pieces.app\u002Fpieces-flatpak-repo\u002Fpieces-flatpak.flatpakrepo",{"key":138,"label":139,"href":140},"downloads.linux.snapDesktop","Linux Snap Desktop","https:\u002F\u002Fsnapcraft.io\u002Fpieces-for-developers",{"key":142,"label":143,"href":144},"downloads.linux.snapPiecesOS","Linux Snap PiecesOS","https:\u002F\u002Fsnapcraft.io\u002Fpieces-os",{"key":146,"label":147,"href":148},"downloads.linux.snap","Desktop Linux Snap package","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fsnap\u002Fdownload",{"key":150,"label":151,"href":152},"downloads.piecesOS.macOS.dmgArm64","PiecesOS macOS DMG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fdmg-arm64\u002Fdownload",{"key":154,"label":155,"href":156},"downloads.piecesOS.macOS.dmgIntel","PiecesOS macOS DMG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fdmg\u002Fdownload",{"key":158,"label":159,"href":160},"downloads.piecesOS.macOS.universal","PiecesOS macOS Universal","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fmacos-universal\u002Fdownload",{"key":162,"label":163,"href":164},"downloads.piecesOS.macOS.pkgArm64","PiecesOS macOS PKG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pos-launch-only-arm64\u002Fdownload",{"key":166,"label":167,"href":168},"downloads.piecesOS.macOS.pkgIntel","PiecesOS macOS PKG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pos-launch-only\u002Fdownload",{"key":170,"label":171,"href":172},"downloads.piecesOS.windows.appinstaller","PiecesOS Windows App Installer","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fappinstaller\u002Fos_server.appinstaller",{"key":174,"label":175,"href":176},"downloads.piecesOS.windows.exe","PiecesOS Windows EXE","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fwindows-exe\u002Fdownload",{"key":178,"label":179,"href":180},"downloads.piecesOS.windows.msix","PiecesOS Windows MSIX","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fwindows-msix\u002Fdownload",{"key":182,"label":183,"href":184},"downloads.piecesOS.linux.snap","PiecesOS Linux Snap package","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fsnap\u002Fdownload",{"key":186,"label":187,"href":188},"downloads.combined.macOS.appleSilicon","Combined macOS installer Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-arm64\u002Fdownload",{"key":190,"label":191,"href":104},"downloads.combined.macOS.intel","Combined macOS installer Intel",{"key":193,"label":194,"href":195},"downloads.guides.macOS","macOS installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Fmacos-installation-guide",{"key":197,"label":198,"href":199},"downloads.guides.windows","Windows installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Fwindows-installation-guide",{"key":201,"label":202,"href":203},"downloads.guides.linux","Linux installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Flinux-installation-guide",{"key":205,"label":206,"href":207},"downloads.guides.linuxFlatpak","Linux Flatpak installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Flinux-installation-guide\u002Fflatpak",{"key":209,"label":210,"href":211},"downloads.guides.linuxSnap","Linux Snap installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Flinux-installation-guide\u002Fsnap",{"key":213,"label":214,"href":215},"downloads.guides.piecesOS","PiecesOS manual installation","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Fmanual-installation",{"key":217,"label":218,"href":219},"extensions.chrome","Chrome extension","https:\u002F\u002Fchrome.google.com\u002Fwebstore\u002Fdetail\u002Fpieces-save-code-snippets\u002Figbgibhbfonhmjlechmeefimncpekepm",{"key":221,"label":222,"href":223},"extensions.firefox","Firefox add-on","https:\u002F\u002Faddons.mozilla.org\u002Fen-US\u002Ffirefox\u002Faddon\u002Fpieces-save-code-from-the-web\u002F",{"key":225,"label":226,"href":227},"extensions.edge","Edge add-on","https:\u002F\u002Fmicrosoftedge.microsoft.com\u002Faddons\u002Fdetail\u002Fpieces-save-code-snippet\u002Fhglfimcdgonaeeobjckfdabcldfidmim",{"key":229,"label":230,"href":231},"extensions.vscode","VS Code extension","https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=MeshIntelligentTechnologiesInc.pieces-vscode",{"key":233,"label":234,"href":235},"extensions.visualStudio","Visual Studio extension","https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=MeshIntelligentTechnologiesInc.PiecesVisualStudio",{"key":237,"label":238,"href":239},"extensions.jetbrains","JetBrains plugin","https:\u002F\u002Fplugins.jetbrains.com\u002Fplugin\u002F17328-pieces--save-search-share--reuse-code-snippets",{"key":241,"label":242,"href":243},"extensions.obsidian","Obsidian plugin","https:\u002F\u002Fobsidian.md\u002Fplugins?id=pieces-for-developers",{"key":245,"label":246,"href":247},"extensions.sublime","Sublime package","https:\u002F\u002Fpackagecontrol.io\u002Fpackages\u002FPieces",{"key":249,"label":250,"href":251},"extensions.neovim","Neovim plugin","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_neo_vim",{"key":253,"label":254,"href":255},"extensions.jupyterlab","JupyterLab plugin","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fjupyterlab-pieces",{"key":257,"label":258,"href":259},"extensions.cli","Pieces CLI","https:\u002F\u002Fpypi.org\u002Fproject\u002Fpieces-cli\u002F",{"key":261,"label":262,"href":263},"docs.home","Documentation home","https:\u002F\u002Fdocs.pieces.app",{"key":265,"label":266,"href":267},"docs.getStarted","Get started docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces",{"key":269,"label":270,"href":271},"docs.api","API docs","https:\u002F\u002Fdocs.pieces.app\u002Fapi",{"key":273,"label":274,"href":275},"docs.desktop.overview","Desktop overview","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop",{"key":277,"label":278,"href":279},"docs.desktop.onboarding","Desktop onboarding","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fonboarding",{"key":281,"label":282,"href":283},"docs.desktop.timeline","Desktop timeline docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Ftimeline",{"key":285,"label":286,"href":287},"docs.desktop.summaries","Desktop summaries docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fsingle-click-summaries",{"key":289,"label":290,"href":291},"docs.desktop.search","Desktop conversational search docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fconversational-search",{"key":293,"label":294,"href":295},"docs.desktop.drive","Desktop drive docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fdrive",{"key":297,"label":298,"href":299},"docs.desktop.account","Desktop account settings docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fconfiguration\u002Faccount",{"key":301,"label":302,"href":92},"docs.desktop.download","Desktop download docs",{"key":304,"label":305,"href":306},"docs.piecesOS.overview","PiecesOS overview docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies",{"key":308,"label":309,"href":310},"docs.piecesOS.details","PiecesOS details docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os",{"key":312,"label":313,"href":215},"docs.piecesOS.install","PiecesOS install docs",{"key":315,"label":316,"href":317},"docs.piecesOS.quickMenu","PiecesOS quick menu docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Fquick-menu",{"key":319,"label":320,"href":321},"docs.piecesOS.storage","On-device storage docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fon-device-storage",{"key":323,"label":324,"href":325},"docs.piecesOS.troubleshooting","PiecesOS troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Ftroubleshooting",{"key":327,"label":328,"href":329},"docs.mcp.overview","MCP overview docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp",{"key":331,"label":332,"href":333},"docs.mcp.cursor","MCP Cursor docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcursor",{"key":335,"label":336,"href":337},"docs.mcp.vscode","MCP VS Code docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fvs-code",{"key":339,"label":340,"href":341},"docs.mcp.claudeDesktop","MCP Claude Desktop docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-desktop",{"key":343,"label":344,"href":345},"docs.mcp.claudeCode","MCP Claude Code docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-code",{"key":347,"label":348,"href":349},"docs.mcp.claudeCowork","MCP Claude Cowork docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-cowork",{"key":351,"label":352,"href":353},"docs.mcp.githubCopilot","MCP GitHub Copilot docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgithub-copilot",{"key":355,"label":356,"href":357},"docs.mcp.goose","MCP Goose docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgoose",{"key":359,"label":360,"href":361},"docs.mcp.windsurf","MCP Windsurf docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fwindsurf",{"key":363,"label":364,"href":365},"docs.mcp.zed","MCP Zed docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fzed",{"key":367,"label":368,"href":369},"docs.mcp.jetbrains","MCP JetBrains docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fjetbrains-ides",{"key":371,"label":372,"href":373},"docs.mcp.continueDev","MCP Continue docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcontinue-dev",{"key":375,"label":376,"href":377},"docs.mcp.cline","MCP Cline docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcline",{"key":379,"label":380,"href":381},"docs.mcp.raycast","MCP Raycast docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fraycast",{"key":383,"label":384,"href":385},"docs.mcp.rovoDevCli","MCP Rovo Dev CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Frovo-dev-cli",{"key":387,"label":388,"href":389},"docs.mcp.openaiCodexCli","MCP OpenAI Codex CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fopenai-codex-cli",{"key":391,"label":392,"href":393},"docs.mcp.googleGeminiCli","MCP Google Gemini CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgoogle-gemini-cli",{"key":395,"label":396,"href":397},"docs.mcp.amazonQ","MCP Amazon Q docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Famazon-q-developer",{"key":399,"label":400,"href":401},"docs.mcp.chatgptDev","MCP ChatGPT Developer Mode docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fchatgpt-developer-mode",{"key":403,"label":404,"href":405},"docs.mcp.openclaw","MCP OpenClaw docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fopenclaw",{"key":407,"label":408,"href":409},"docs.mcp.mcpRemote","MCP Remote docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fmcp-remote",{"key":411,"label":412,"href":413},"docs.mcp.ngrok","MCP ngrok docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fngrok-setup",{"key":415,"label":416,"href":417},"docs.troubleshooting.macOS","macOS troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Fmacos",{"key":419,"label":420,"href":421},"docs.troubleshooting.windows","Windows troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Fwindows",{"key":423,"label":424,"href":425},"docs.troubleshooting.linux","Linux troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Flinux",{"key":427,"label":428,"href":429},"docs.privacy","Privacy and security docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fprivacy-security-your-data",{"key":431,"label":432,"href":433},"docs.support","Support docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fsupport",{"key":435,"label":436,"href":437},"portal.home","Pieces portal","https:\u002F\u002Fportal.pieces.app",{"key":439,"label":440,"href":441},"site.home","Website home","https:\u002F\u002Fpieces.app",{"key":443,"label":444,"href":445},"site.about","About page","https:\u002F\u002Fpieces.app\u002Fabout",{"key":447,"label":448,"href":449},"site.features","Features page","https:\u002F\u002Fpieces.app\u002Ffeatures",{"key":451,"label":452,"href":453},"site.plugins","Plugins page","https:\u002F\u002Fpieces.app\u002Fplugins",{"key":455,"label":456,"href":457},"site.contact","Contact page","https:\u002F\u002Fpieces.app\u002Fcontact",{"key":459,"label":58,"href":460},"site.updates","https:\u002F\u002Fpieces.app\u002Fupdates",{"key":462,"label":463,"href":464},"site.news","News","https:\u002F\u002Fpieces.app\u002Fnews",{"key":466,"label":467,"href":468},"site.events","Community events","https:\u002F\u002Fpieces.app\u002Fcommunity\u002Fevents",{"key":470,"label":471,"href":472},"site.userStories","User stories","https:\u002F\u002Fpieces.app\u002Fuser-stories",{"key":474,"label":475,"href":476},"site.academy","Academy","https:\u002F\u002Fpieces.app\u002Flearn\u002Facademy",{"key":478,"label":479,"href":480},"site.support","Website support","https:\u002F\u002Fpieces.app\u002Fsupport",{"key":482,"label":483,"href":484},"site.standup","Standup","https:\u002F\u002Fpieces.app\u002Fstandup",{"key":486,"label":34,"href":487},"site.blog","https:\u002F\u002Fcode.pieces.app\u002Fblog",{"key":489,"label":43,"href":490},"social.discord","https:\u002F\u002Fdiscord.gg\u002Fgetpieces",{"key":492,"label":46,"href":493},"social.x","https:\u002F\u002Fx.com\u002Fgetpieces",{"key":495,"label":496,"href":493},"social.twitter","Twitter",{"key":498,"label":499,"href":500},"social.instagram","Instagram","https:\u002F\u002Fwww.instagram.com\u002Fgetpieces\u002F",{"key":502,"label":503,"href":504},"social.tiktok","TikTok","https:\u002F\u002Fwww.tiktok.com\u002F@getpieces",{"key":506,"label":49,"href":507},"social.linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fgetpieces\u002F",{"key":509,"label":510,"href":511},"social.youtube","YouTube","https:\u002F\u002Fyoutube.com\u002F@getpieces",{"key":513,"label":514,"href":515},"github.org","GitHub organization","https:\u002F\u002Fgithub.com\u002Fpieces-app",{"key":517,"label":518,"href":519},"github.support","GitHub support","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport",{"key":521,"label":522,"href":523},"github.issues","GitHub issues","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport\u002Fissues",{"key":525,"label":526,"href":527},"github.discussions","GitHub discussions","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport\u002Fdiscussions",{"key":529,"label":530,"href":531},"github.documentation","GitHub documentation","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fdocumentation",{"key":533,"label":534,"href":535},"github.opensource","GitHub open source","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fopensource",{"key":537,"label":538,"href":539},"github.sdks.python","Python SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-python",{"key":541,"label":542,"href":543},"github.sdks.typescript","TypeScript SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-typescript",{"key":545,"label":546,"href":547},"github.sdks.dart","Dart SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-dart",{"key":549,"label":550,"href":551},"github.sdks.kotlin","Kotlin SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-kotlin",{"key":553,"label":554,"href":555},"github.plugins.obsidian","Obsidian plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fobsidian-pieces",{"key":557,"label":558,"href":255},"github.plugins.jupyterlab","JupyterLab plugin repository",{"key":560,"label":561,"href":562},"github.plugins.sublime","Sublime plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_sublime",{"key":564,"label":565,"href":566},"github.plugins.neovim","Neovim plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_neovim",{"key":568,"label":569,"href":570},"github.cliAgent","CLI agent repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fcli-agent",{"key":572,"label":573,"href":574},"github.mcpDart","MCP Dart repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fmcp_dart",{"key":576,"label":577,"href":578},"github.awesomePieces","Awesome Pieces repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fawesome-pieces",{"key":580,"label":581,"href":66},"legal.privacyPolicy","Privacy policy",{"key":583,"label":584,"href":69},"legal.refundPolicy","Refund policy",{"key":586,"label":587,"href":72},"legal.terms","Terms",{"key":589,"label":590,"href":591},"legal.security","Legal security","https:\u002F\u002Fpieces.app\u002Flegal\u002Fsecurity",{"key":593,"label":594,"href":511},"videos.youtubeChannel","YouTube channel",{"key":596,"label":597,"href":598},"videos.gettingStartedDesktop","Getting started desktop video","https:\u002F\u002Fyoutu.be\u002FdUr1lRM_TYk",{"key":600,"label":601,"href":602},"videos.snippetDiscoveryxR","Snippet discovery video","https:\u002F\u002Fyoutu.be\u002FG6vb1USw-30",{"key":604,"label":605,"href":606},"sales.bookACall","Book a sales call","https:\u002F\u002Fcalendar.app.google\u002FWVUDtUfNy5Vst3sH7",{"key":608,"label":609,"href":610},"sales.enterprise","Enterprise form","https:\u002F\u002Fgetpieces.typeform.com\u002Fto\u002FaVQFTvpE",{"key":612,"label":613,"href":527},"sales.feedback","Feedback discussions",{"key":615,"label":616,"href":617},"sales.earlyAccess","Early access form","https:\u002F\u002Fgetpieces.typeform.com\u002Fearlyaccess",{"key":619,"label":620,"href":621},"sales.supportEmail","Support email","mailto:support@pieces.app",{"key":623,"label":624,"href":19},"routes.home","Home route",{"key":626,"label":627,"href":56},"routes.about","About route",{"key":629,"label":630,"href":12},"routes.downloads","Downloads route",{"key":632,"label":633,"href":634},"routes.thanks","Post-install thanks route","\u002Finstall\u002Fthanks",{"key":636,"label":637,"href":638},"routes.pricing","Pricing route","\u002Fpricing",{"key":640,"label":641,"href":642},"cta.freeTrial","Start free trial CTA (Pieces Pro) — used by \u002Fcampaigns\u002F* landing pages","https:\u002F\u002Fcampaigns.pieces.app\u002F",{"key":644,"label":645,"href":22},"routes.enterprise","Enterprise route",{"key":647,"label":648,"href":62},"routes.contact","Contact route",{"key":650,"label":651,"href":59},"routes.updates","Updates route",{"key":653,"label":654,"href":655},"routes.migrationError","Migration error route","\u002Fmigration\u002Ferror",{"key":657,"label":658,"href":659},"routes.authenticated","Post-login authenticated route","\u002Fauth\u002Fsigned-in",{"key":661,"label":662,"href":663},"routes.signed-out","Signed out route","\u002Fauth\u002Fsigned-out",{"key":665,"label":666,"href":667},"routes.authentication-error","Authentication error route","\u002Fauth\u002Ferror",{},"data\u002Fshared\u002Furls","2AvfSWI6bZACH5Kr1ZS3txMLjteRjCjbDR_ul1uRZ9Q",{"id":672,"title":673,"author":674,"authorPhoto":675,"authorPhotoAlt":676,"authorSlug":677,"body":678,"buttonText":1260,"buttonUrl":1260,"category":1261,"date":1262,"description":1263,"draft":1264,"editorsPick":1264,"extension":1265,"featured":1264,"image":1266,"imageAlt":1267,"meta":1268,"navigation":32,"ogImage":1260,"ogImageAlt":1260,"path":1269,"seo":1270,"stem":1271,"tags":1260,"__hash__":1272},"blog\u002Fblog\u002Fstreamlining-azure-django-deployment.md","Streamlining Azure Django Deployment","Sophia Iroegbu","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Ftop-5-open-source-ai-chatbots-for-developers\u002Fauthor.jpeg","Photo of Sophia Iroegbu","sophia-iroegbu",{"type":679,"value":680,"toc":1253},"minimark",[681,685,696,699,702,707,710,734,738,741,751,759,766,776,782,788,797,800,806,812,833,839,847,854,860,866,872,876,879,882,899,910,917,922,928,934,939,945,951,960,966,972,982,988,994,999,1005,1018,1024,1033,1039,1045,1051,1057,1068,1074,1084,1090,1093,1099,1102,1108,1118,1124,1130,1133,1147,1153,1160,1166,1169,1175,1179,1182,1198,1204,1215,1221,1231,1237,1240,1244,1247,1250],[682,683,684],"p",{},"Azure is a cloud computing service that lets developers and DevOps engineers effortlessly and efficiently deploy and maintain web servers or applications. It offers amazing advantages like scalability, reliability, and security on the deployed web apps or servers.",[682,686,687,688,695],{},"Django is the most popular ",[689,690,694],"a",{"href":691,"rel":692},"https:\u002F\u002Fpieces.app\u002Fblog\u002Fthe-top-4-python-back-end-frameworks-for-your-next-project",[693],"nofollow","Python backend framework"," for rapid web development. Django allows you to create backend servers, full-stack online apps, or websites, as well as perform AI or machine learning tasks.",[682,697,698],{},"This step-by-step guide will walk you through the process of Azure Django deployment, understanding the deployment workflow, and enabling continuous deployment for a seamless development workflow for you.",[682,700,701],{},"Let's delve into the details and unlock the potential of Azure for your Django projects!",[703,704,706],"h2",{"id":705},"prerequisites","Prerequisites",[682,708,709],{},"Now that you've understood the significance of Azure, here are certain prerequisites to ensure that you follow this instructional guide correctly.",[711,712,713,723,726],"ul",{},[714,715,716,717,722],"li",{},"Have an account on ",[689,718,721],{"href":719,"rel":720},"https:\u002F\u002Fazure.microsoft.com\u002Fen-us",[693],"Azure",".",[714,724,725],{},"You should have a Django app ready for deployment.",[714,727,728,729,733],{},"You must have a ",[689,730,37],{"href":731,"rel":732},"https:\u002F\u002Fgithub.com\u002F",[693]," account.",[703,735,737],{"id":736},"configuring-azure-for-django-deployment","Configuring Azure for Django Deployment",[682,739,740],{},"This section will walk you through the steps of creating a web app on Azure to host your Django web app or web server.",[742,743,744],"ol",{},[714,745,746,747],{},"Login to your Azure portal and click ",[748,749,750],"strong",{},"App Services.",[682,752,753,754,722],{},"The app services are designed to host websites, web applications, API endpoints, and ",[689,755,758],{"href":756,"rel":757},"https:\u002F\u002Fpieces.app\u002Fblog\u002Fmost-popular-backend-frameworks-for-web-development",[693],"backend frameworks for web development",[682,760,761],{},[762,763],"img",{"alt":764,"src":765},"Azure app services.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-001.png",[742,767,769],{"start":768},2,[714,770,771,772,775],{},"Click ",[748,773,774],{},"Create"," on the next screen to add an app service to your Azure account. To select which app service to deploy, a dropdown menu will appear.",[682,777,778,779,722],{},"Because you are deploying a web server that will require a database, select ",[748,780,781],{},"Web App + Database",[682,783,784],{},[762,785],{"alt":786,"src":787},"Create a Web App + Database.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-002.png",[742,789,791],{"start":790},3,[714,792,793,794],{},"Select subscriptions and resource groups, leave the region as it is, and define your web app details. If you don't already have a Resource group, click ",[748,795,796],{},"Create new.",[682,798,799],{},"Depending on the needs of your project, you can utilize Python 3.10 or 3.11. This guide uses Python 3.10.",[682,801,802],{},[762,803],{"alt":804,"src":805},"Naming your app and selecting a Python version.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-003.png",[742,807,809],{"start":808},4,[714,810,811],{},"Define your database details.",[711,813,814,817,820,823,826],{},[714,815,816],{},"Use the suggested engine if this is your first time using Azure and it is a hobby project.",[714,818,819],{},"The other details have been pre-defined based on your web app details.",[714,821,822],{},"This guide will be focused on deploying a basic app therefore there will be no need to use the Azure Redis service.",[714,824,825],{},"Choose a hosting package based on your demands, such as a hobby project or a production project.",[714,827,828,829,832],{},"Select ",[748,830,831],{},"Review + Create"," to create the app service and database for your Django app.",[682,834,835],{},[762,836],{"alt":837,"src":838},"Review and create your app and database.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-004.png",[742,840,842],{"start":841},5,[714,843,844,845,722],{},"On the following screen, you should be able to review the details of your web app and database. After you've double-checked that all of the information is correct, click ",[748,846,774],{},[682,848,849,850,853],{},"Scroll to ",[748,851,852],{},"Database(new)"," and save the credentials as you will be using these to set up a PostgreSQL database on your Django project.",[682,855,856],{},[762,857],{"alt":858,"src":859},"Saving your database credentials.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-005.png",[742,861,863],{"start":862},6,[714,864,865],{},"Your deployed app should look like this. With this, you can search and connect your Django project to the created app service.",[682,867,868],{},[762,869],{"alt":870,"src":871},"Your deployed app.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-006.png",[703,873,875],{"id":874},"using-azure-to-deploy-django-app","Using Azure to Deploy Django App",[682,877,878],{},"This section will show you how to deploy your Django application from your local machine to your newly formed Azure hosting service.",[682,880,881],{},"You've now configured your Azure account for deployment. It's time to make your Django project public.",[742,883,884],{},[714,885,886,887,892,893,898],{},"Start by installing ",[689,888,891],{"href":889,"rel":890},"https:\u002F\u002Fpypi.org\u002Fproject\u002Fpsycopg2\u002F",[693],"Psycopg",", a PostgreSQL database adapter, first. This is used to link a PostgreSQL database server to a Django project, and install ",[689,894,897],{"href":895,"rel":896},"https:\u002F\u002Fpypi.org\u002Fproject\u002Fwhitenoise\u002F",[693],"Whitenoise",", it allows you to render static files on a server.",[900,901,906],"pre",{"className":902,"code":904,"language":905},[903],"language-text","pip install psycopg2 whitenoise\n","text",[907,908,904],"code",{"__ignoreMap":909},"",[682,911,912],{},[689,913,916],{"href":914,"rel":915},"https:\u002F\u002Fsophyia.pieces.cloud\u002F?p=4a674184a4",[693],"Save this code",[742,918,919],{"start":768},[714,920,921],{},"Make changes to settings.py before deployment. You would need to add the whitenoise middleware, your azure web app URL to the trusted CRSF and authorized host lists, make sure that static files have a storage location, and make use of the whitenoise middleware to render them.",[900,923,926],{"className":924,"code":925,"language":905},[903],"# Define ALLOWED_HOST\nALLOWED_HOSTS = ['name-of-web-app.azurewebsites.net', '127.0.0.1']\n# Modify Middleware \nMIDDLEWARE = [\n 'django.middleware.security.SecurityMiddleware',\n 'whitenoise.middleware.WhiteNoiseMiddleware',\n # new \n 'django.contrib.sessions.middleware.SessionMiddleware',\n 'django.middleware.common.CommonMiddleware',\n 'django.middleware.csrf.CsrfViewMiddleware',\n \"corsheaders.middleware.CorsMiddleware\",\n \"django.middleware.common.CommonMiddleware\",\n 'django.contrib.auth.middleware.AuthenticationMiddleware',\n 'django.contrib.messages.middleware.MessageMiddleware',\n 'django.middleware.clickjacking.XFrameOptionsMiddleware',\n]\n# Update Staticfiles directory\nSTATIC_URL = 'static\u002F'\nSTATIC_ROOT = os.path.join(BASE_DIR, 'static')\nSTATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'\n# Add azure web app as trusted CRSF\nCRSF_TRUSTED_ORIGINS = [\"fintech-app.azurewebsites.net\"]\n",[907,927,925],{"__ignoreMap":909},[682,929,930],{},[689,931,916],{"href":932,"rel":933},"https:\u002F\u002Fsophyia.pieces.cloud\u002F?p=e4c5468de4",[693],[742,935,936],{"start":790},[714,937,938],{},"Update your requirements.txt or create one if you don’t have one. The requirements.txt file tells Azure which packages must be installed on the cloud area for the app to execute.",[900,940,943],{"className":941,"code":942,"language":905},[903],"pip freeze > requirements.txt\n",[907,944,942],{"__ignoreMap":909},[682,946,947],{},[689,948,916],{"href":949,"rel":950},"https:\u002F\u002Fsophyia.pieces.cloud\u002F?p=6018408725",[693],[742,952,953],{"start":808},[714,954,955,956,959],{},"Create a file, ",[748,957,958],{},".production."," Define a set of commands for Azure to Auto_build your Django app on its cloud.",[900,961,964],{"className":962,"code":963,"language":905},[903],"[config]SCM_DO_BUILD_DURING_DEPLOYMENT = true\n",[907,965,963],{"__ignoreMap":909},[682,967,968],{},[689,969,916],{"href":970,"rel":971},"https:\u002F\u002Fsophyia.pieces.cloud\u002F?p=5cdf4198cc",[693],[742,973,974],{"start":841},[714,975,976,977,981],{},"Create the ",[978,979,980],"em",{},".gitignore"," file. Specific files and folders won't be taken into account when pushing to your remote repository by GitHub. By doing this, you can prevent sharing private information or pushing unwanted data.",[900,983,986],{"className":984,"code":985,"language":905},[903],"# Byte-compiled \u002F optimized \u002F DLL files\n__pycache__\u002F\n*.py[cod]\n*$py.class\n.vscode\u002F\n# C extensions\n*.so\n# Distribution \u002F packaging\n.Python\nbuild\u002F\ndevelop-eggs\u002F\ndist\u002F\ndownloads\u002F\neggs\u002F\n.eggs\u002F\nlib\u002F\nlib64\u002F\nparts\u002F\nsdist\u002F\nvar\u002F\nwheels\u002F\npip-wheel-metadata\u002F\nshare\u002Fpython-wheels\u002F\n*.egg-info\u002F\n.installed.cfg\n*.egg\nMANIFEST\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date\u002Fother infos into it.\n*.manifest\n*.spec\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n# Unit test \u002F coverage reports\nhtmlcov\u002F\n.tox\u002F\n.nox\u002F\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n*.py,cover\n.hypothesis\u002F\n.pytest_cache\u002F\n# Translations\n*.mo\n*.pot\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\ndb.sqlite3-journal\n# Flask stuff:\ninstance\u002F\n.webassets-cache\n# Scrapy stuff:\n.scrapy\n# Sphinx documentation\ndocs\u002F_build\u002F\n# PyBuilder\ntarget\u002F\n# Jupyter Notebook\n.ipynb_checkpoints\n# IPython\nprofile_default\u002F\nipython_config.py\n# pyenv\n.python-version\n# pipenv\n#   According to pypa\u002Fpipenv#598, it is recommended to include Pipfile.lock in version control.\n#   However, in case of collaboration, if having platform-specific dependencies or dependencies\n#   having no cross-platform support, pipenv may install dependencies that don't work, or not\n#   install all needed dependencies.\n#Pipfile.lock\n# PEP 582; used by e.g. github.com\u002FDavid-OConnor\u002Fpyflow\n__pypackages__\u002F\n# Celery stuff\ncelerybeat-schedule\ncelerybeat.pid\n# SageMath parsed files\n*.sage.py\n# Environments\nmyenv\u002F\n.env\n.venv\nenv\u002F\nvenv\u002F\nENV\u002F\nenv.bak\u002F\nvenv.bak\u002F\n# Spyder project settings\n.spyderproject\n.spyproject\n# Rope project settings\n.ropeproject\n# mkdocs documentation\n\u002Fsite\n# mypy\n.mypy_cache\u002F\n.dmypy.json\ndmypy.json\n# Pyre type checker\n.pyre\u002F\n",[907,987,985],{"__ignoreMap":909},[682,989,990],{},[689,991,916],{"href":992,"rel":993},"https:\u002F\u002Fsophyia.pieces.cloud\u002F?p=f51d409a70",[693],[742,995,996],{"start":862},[714,997,998],{},"Once you are done modifying your codebase, go to the Azure portal and choose the app service you just built. The Deployment Center should be located. Here, you can select a build source from options like GitHub, BitBucket or other source methods.",[682,1000,1001],{},[762,1002],{"alt":1003,"src":1004},"Selecting a build source.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-007.png",[742,1006,1008],{"start":1007},7,[714,1009,828,1010,1013,1014,1017],{},[748,1011,1012],{},"Deployment Center"," and choose a source under ",[748,1015,1016],{},"Settings",". For the sake of this guide, we’ll use GitHub.",[682,1019,1020],{},[762,1021],{"alt":1022,"src":1023},"Selecting GitHub.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-008.png",[742,1025,1027],{"start":1026},8,[714,1028,1029,1030,722],{},"If this is your first time using Azure, you will be asked to sign in with your GitHub account. To login to your GitHub account, click ",[748,1031,1032],{},"Authorize",[682,1034,1035],{},[762,1036],{"alt":1037,"src":1038},"Authorizing your GitHub account to connect to Azure.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-009.png",[742,1040,1042],{"start":1041},9,[714,1043,1044],{},"Once you authorize your GitHub account, you would need to select an organization, repository and branch that has the codebase you want to deploy.",[682,1046,1047],{},[762,1048],{"alt":1049,"src":1050},"Selecting a GitHub repository.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-010.png",[742,1052,1054],{"start":1053},10,[714,1055,1056],{},"Azure would create a YML file that commands for deployment. The .yml file is used to configure CI\u002FCD pipeline for automatic Django deployments and easy building of releases. This helps manage the applications better.",[682,1058,1059,1060,1063,1064,1067],{},"To preview it, click on ",[748,1061,1062],{},"Preview file"," under ",[748,1065,1066],{},"Workflow Configuration",". Note: if you defined any workflow yml, it will be overwritten.",[682,1069,1070],{},[762,1071],{"alt":1072,"src":1073},"Previewing your workflow configuration.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-011.png",[742,1075,1077],{"start":1076},11,[714,1078,1079,1080,1083],{},"Once you are satisfied with the deployment settings, click ",[748,1081,1082],{},"Save"," to set up the deployment on GitHub actions.",[682,1085,1086],{},[762,1087],{"alt":1088,"src":1089},"Saving your deployment pipeline.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-012.png",[682,1091,1092],{},"Once your GitHub Action has been setup, you would be notified.",[682,1094,1095],{},[762,1096],{"alt":1097,"src":1098},"Success message.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-013.png",[682,1100,1101],{},"You can see the yml file on your git remote repo that you set during the deployment process.",[682,1103,1104],{},[762,1105],{"alt":1106,"src":1107},"Your GitHub remote repo.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-014.png",[742,1109,1111],{"start":1110},12,[714,1112,1113,1114,1117],{},"Add an additional code on the yml file to collectstatic file and render them. Do this close to the ",[748,1115,1116],{},"install dependencies"," line.",[900,1119,1122],{"className":1120,"code":1121,"language":905},[903],"- name: Install dependencies\n        run: pip install -r requirements.txt\n      - name: Run collectstatic\n        run: python manage.py collectstatic\n",[907,1123,1121],{"__ignoreMap":909},[682,1125,1126,722],{},[689,1127,916],{"href":1128,"rel":1129},"https:\u002F\u002Fsophyia.pieces.cloud\u002F?p=af3e40bd07",[693],[682,1131,1132],{},"Once done, commit your changes and push to your git repo. The GitHub actions will auto-deploy the codebase to Azure.",[742,1134,1136],{"start":1135},13,[714,1137,1138,1139,1142,1143,1146],{},"Update your database details and hostname on your Azure. Click on ",[748,1140,1141],{},"Configuration"," and select ",[748,1144,1145],{},"New application setting."," Don’t forget to add secret information on your application settings. This is to create a more secure django app.",[682,1148,1149],{},[762,1150],{"alt":1151,"src":1152},"Configuring a new application setting.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-015.png",[682,1154,1155,1156,1159],{},"Define the name and the value and click ",[748,1157,1158],{},"Ok"," to set a secret info on your azure cloud.",[682,1161,1162],{},[762,1163],{"alt":1164,"src":1165},"Naming your database.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-016.png",[682,1167,1168],{},"Now, that’s it! Your Azure Django app is live!",[682,1170,1171],{},[762,1172],{"alt":1173,"src":1174},"Your live Azure project.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-017.png",[703,1176,1178],{"id":1177},"migrating-database","Migrating Database",[682,1180,1181],{},"Once your Azure Django hosting is set up and your project is up and running, you must migrate and update the tables in your database to enable full functionality.",[742,1183,1184],{},[714,1185,828,1186,1189,1190,1193,1194,1197],{},[748,1187,1188],{},"SSH"," from the Azure portal's ",[748,1191,1192],{},"Development tool"," and click ",[748,1195,1196],{},"Go",". With this, you can start a Linux terminal and run Python commands like creating a superuser or migrating a database.",[682,1199,1200],{},[762,1201],{"alt":1202,"src":1203},"Selecting your SSH key.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-018.png",[742,1205,1206],{"start":768},[714,1207,1208,1209,1214],{},"Run this ",[689,1210,1213],{"href":1211,"rel":1212},"https:\u002F\u002Fsophyia.pieces.cloud\u002F?p=41844ebf1a",[693],"command"," to migrate tables based on your existing models in the Django app.",[682,1216,1217],{},[762,1218],{"alt":1219,"src":1220},"Migrating your tables in the Django app.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-019.png",[742,1222,1223],{"start":790},[714,1224,1225,1226,1230],{},"Use this ",[689,1227,1213],{"href":1228,"rel":1229},"https:\u002F\u002Fsophyia.pieces.cloud\u002F?p=9a1e48b3d9",[693]," to create a superuser to access your django admin.",[682,1232,1233],{},[762,1234],{"alt":1235,"src":1236},"Creating a Django admin.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fimg-020.png",[682,1238,1239],{},"That’s all! You’ve managed to deploy a Django app on Azure.",[703,1241,1243],{"id":1242},"conclusion","Conclusion",[682,1245,1246],{},"This guide has explained how to use Azure for a swift deployment for your Django web apps or servers. Azure is an affordable hosting platform for your hobby project, startup, or even a large scale company with lots of traffic.",[682,1248,1249],{},"Azure app services can be used to deploy any web application; web servers, mobile backends, JSON API endpoints, etc., regardless of what continuous deployment source you are using; GitHub, Azure repos, BitBucket, or if you are using a manual deployment source.",[682,1251,1252],{},"Overall, the best way to deploy Django apps is with Azure because of its scalability, security and flexibility. Thanks to this article, your Azure Django deployment should be a smooth process.",{"title":909,"searchDepth":768,"depth":768,"links":1254},[1255,1256,1257,1258,1259],{"id":705,"depth":768,"text":706},{"id":736,"depth":768,"text":737},{"id":874,"depth":768,"text":875},{"id":1177,"depth":768,"text":1178},{"id":1242,"depth":768,"text":1243},null,"Software Development","2023-10-16T00:00:00.000Z","Learn how to streamline Azure Django deployment for efficient app hosting on Azure. Simplify the process and boost your web application's performance.",false,"md","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fstreamlining-azure-django-deployment\u002Fhero.jpeg","Photo of a person coding in their laptop.",{},"\u002Fblog\u002Fstreamlining-azure-django-deployment",{"title":673,"description":1263},"blog\u002Fstreamlining-azure-django-deployment","nBqCjBarc7_p4F-LNM2KFvkgVe80Cq0iJOB-5soAk5M",{"id":1274,"title":674,"body":1275,"description":1279,"draft":1264,"extension":1265,"meta":1282,"navigation":32,"path":1283,"photo":1284,"photoAlt":1260,"seo":1285,"stem":1286,"__hash__":1287},"authors\u002Fauthors\u002Fsophia-iroegbu.md",{"type":679,"value":1276,"toc":1280},[1277],[682,1278,1279],{},"Sophia is a Backend Engineer and Technical Writer who brings a unique blend of technical expertise and strong communication skills to every project.",{"title":909,"searchDepth":768,"depth":768,"links":1281},[],{},"\u002Fauthors\u002Fsophia-iroegbu","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fauthors\u002Fsophia-iroegbu.jpg",{"title":674,"description":1279},"authors\u002Fsophia-iroegbu","uD0gneoN161lI_x5gvltTdCvcxhwYtI0_Xh1I94IpDE",{"left":1289,"top":1289,"width":1290,"height":1290,"rotate":1289,"vFlip":1264,"hFlip":1264,"body":1291},0,24,"\u003Cpath fill=\"currentColor\" d=\"m7.825 13l4.9 4.9q.3.3.288.7t-.313.7q-.3.275-.7.288t-.7-.288l-6.6-6.6q-.15-.15-.213-.325T4.426 12t.063-.375t.212-.325l6.6-6.6q.275-.275.688-.275t.712.275q.3.3.3.713t-.3.712L7.825 11H19q.425 0 .713.288T20 12t-.288.713T19 13z\"\u002F>"]