CINXE.COM
DjangoCon Africa 2025
<html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>DjangoCon Africa 2025</title> <script src="https://unpkg.com/htmx.org@1.9.11" integrity="sha384-0gxUXCCR8yv9FM2b+U3FDbsKthCI66oH5IA9fHppQq9DDMHuMauqq1ZHBpJxQ0J0" crossorigin="anonymous"></script> <script src="//unpkg.com/alpinejs" defer></script> <link rel="stylesheet" type="text/css" href="/static/src/tailwind_final.487d451d4141.css"> <script src="/static/src/font_awesome_5.cee44411aa62.js" crossorigin="anonymous"></script> <link href="/static/images/icon.cb246bedd5b7.png" rel="shortcut icon"> </head> <body hx-headers='{"X-CSRFToken": "Gin3qwWulof3IcACZOr3dH1sBU1kCmPEVRID5HN6QjQUy71UAaSKoi56abQnSNiS"}'> <header class="w-full bg-white text-black sticky top-0 z-50 border-b"> <div class="dj-container flex h-16 items-center justify-between"> <a href="/"> <img src="/static/images/logo-black.5fcfcffbbe8b.svg" alt="logo" class="w-[150px]" /> </a> <nav class="hidden lg:flex items-center gap-x-5"> <div class="relative group"> <div x-data="{ open: false }" class="relative inline-block"> <div class="py-3 flex items-center hover:border-b-2 hover:border-deepTeal border-b-2 border-deepTeal"> <button @click="open = !open" @click.outside="open = false" class="flex items-center gap-x-1 py-2 text-deepTeal"> <span class="text-base">Conference</span> <i class="fas fa-chevron-down transition-transform opacity-30 duration-200" :class="{ 'rotate-180': open }"></i> </button> </div> <div x-show="open" class="absolute left-0 mt-1 w-fit rounded-md shadow-2xl ring-1 ring-black ring-opacity-5 bg-white" style="display: none;"> <div class="py-1" role="menu"> <a href="/coc" class="block px-4 py-3 text-nowrap text-black hover:bg-gray-100"> Code of Conduct </a> </div> </div> </div> </div> <div class="relative group"> <div x-data="{ open: false }" class="relative inline-block"> <div class="py-3 flex items-center hover:border-b-2 hover:border-deepTeal "> <button @click="open = !open" @click.outside="open = false" class="flex items-center gap-x-1 py-2 "> <span class="text-base">Resources</span> <i class="fas fa-chevron-down transition-transform opacity-30 duration-200" :class="{ 'rotate-180': open }"></i> </button> </div> <div x-show="open" class="absolute left-0 mt-1 w-fit rounded-md shadow-2xl ring-1 ring-black ring-opacity-5 bg-white" style="display: none;"> <div class="py-1" role="menu"> <a href="/news" class="block px-4 py-3 text-nowrap text-black hover:bg-gray-100"> News </a> <a href="/opportunity_grants" class="block px-4 py-3 text-nowrap text-black hover:bg-gray-100"> Opportunity Grants </a> </div> </div> </div> </div> <div class="relative group"> <div x-data="{ open: false }" class="relative inline-block"> <div class="py-3 flex items-center hover:border-b-2 hover:border-deepTeal "> <button @click="open = !open" @click.outside="open = false" class="flex items-center gap-x-1 py-2 "> <span class="text-base">Speaking</span> <i class="fas fa-chevron-down transition-transform opacity-30 duration-200" :class="{ 'rotate-180': open }"></i> </button> </div> <div x-show="open" class="absolute left-0 mt-1 w-fit rounded-md shadow-2xl ring-1 ring-black ring-opacity-5 bg-white" style="display: none;"> <div class="py-1" role="menu"> <a href="/speaking" class="block px-4 py-3 text-nowrap text-black hover:bg-gray-100"> Speaking at Djangocon Africa </a> <a href="/speaker_resources" class="block px-4 py-3 text-nowrap text-black hover:bg-gray-100"> Speaker Resources </a> <a href="https://pretalx.com/djangocon-africa-2025/cfp" class="block px-4 py-3 text-nowrap text-black hover:bg-gray-100"> Call for Proposals </a> </div> </div> </div> </div> <div class="relative group"> <div x-data="{ open: false }" class="relative inline-block"> <div class="py-3 flex items-center hover:border-b-2 hover:border-deepTeal "> <button @click="open = !open" @click.outside="open = false" class="flex items-center gap-x-1 py-2 "> <span class="text-base">Sponsors</span> <i class="fas fa-chevron-down transition-transform opacity-30 duration-200" :class="{ 'rotate-180': open }"></i> </button> </div> <div x-show="open" class="absolute left-0 mt-1 w-fit rounded-md shadow-2xl ring-1 ring-black ring-opacity-5 bg-white" style="display: none;"> <div class="py-1" role="menu"> <a href="/sponsor_us" class="block px-4 py-3 text-nowrap text-black hover:bg-gray-100"> Become a Sponsor </a> <a href="/sponsors" class="block px-4 py-3 text-nowrap text-black hover:bg-gray-100"> Our Sponsors </a> </div> </div> </div> </div> </nav> <div class="flex items-center gap-x-2"> <div class="relative" x-data="{ open: false }"> <button @click="open = !open" @click.outside="open = false" class="flex items-center justify-center size-10 rounded-full text-black hover:text-gray-700 border-black/10 border transition-colors" > <span>🇬🇧</span> </button> <div x-show="open" x-transition:enter="transition ease-out duration-100" x-transition:enter-start="transform opacity-0 scale-95" x-transition:enter-end="transform opacity-100 scale-100" x-transition:leave="transition ease-in duration-75" x-transition:leave-start="transform opacity-100 scale-100" x-transition:leave-end="transform opacity-0 scale-95" class="absolute right-0 mt-2 py-2 w-48 bg-gray-50 border border-gray-200 rounded-md shadow-xl z-50" style="display: none" > <div class="py-1" role="menu" aria-orientation="vertical"> <form action="/set_language/" method="post" class="inline"> <input type="hidden" name="csrfmiddlewaretoken" value="Gin3qwWulof3IcACZOr3dH1sBU1kCmPEVRID5HN6QjQUy71UAaSKoi56abQnSNiS"> <input type="hidden" name="next" value="/coc" /> <button type="submit" name="language" value="en" class="w-full text-left flex justify-between px-4 py-2 text-black hover:bg-gray-100" :class="{ 'bg-gray-100': 'en' === 'en' }" role="menuitem" > English <i class="fas fa-check opacity-30"></i> </button> </form> <form action="/set_language/" method="post" class="inline"> <input type="hidden" name="csrfmiddlewaretoken" value="Gin3qwWulof3IcACZOr3dH1sBU1kCmPEVRID5HN6QjQUy71UAaSKoi56abQnSNiS"> <input type="hidden" name="next" value="/coc" /> <button type="submit" name="language" value="fr" class="w-full text-left flex justify-between px-4 py-2 text-black hover:bg-gray-100" :class="{ 'bg-gray-100': 'en' === 'fr' }" role="menuitem" > French </button> </form> </div> </div> </div> <button x-data @click="$dispatch('toggle-mobile-menu')" class="lg:hidden flex items-center justify-center size-10 rounded-full border-black/10 border transition-colors" > <i class="fas fa-bars"></i> <span class="sr-only">Toggle Menu</span> </button> </div> </div> <div x-data="{ isOpen: false }" @toggle-mobile-menu.window="isOpen = !isOpen" x-show="isOpen" class="fixed inset-0 z-50 flex flex-col bg-white text-black lg:hidden" x-effect="isOpen ? document.body.style.overflow = 'hidden' : document.body.style.overflow = 'auto'" style="display: none;"> <div class="border-b"> <div class="dj-container flex h-16 items-center justify-between"> <a href="/"> <img src="/static/images/logo-black.5fcfcffbbe8b.svg" alt="logo" class="w-[150px]" /> </a> <div class="flex items-center gap-x-2"> <div class="relative" x-data="{ open: false }"> <button @click="open = !open" @click.outside="open = false" class="flex items-center justify-center size-10 rounded-full text-black hover:text-gray-700 border-black/10 border transition-colors" > <span>🇬🇧</span> </button> <div x-show="open" x-transition:enter="transition ease-out duration-100" x-transition:enter-start="transform opacity-0 scale-95" x-transition:enter-end="transform opacity-100 scale-100" x-transition:leave="transition ease-in duration-75" x-transition:leave-start="transform opacity-100 scale-100" x-transition:leave-end="transform opacity-0 scale-95" class="absolute right-0 mt-2 py-2 w-48 bg-gray-50 border border-gray-200 rounded-md shadow-xl z-50" style="display: none" > <div class="py-1" role="menu" aria-orientation="vertical"> <form action="/set_language/" method="post" class="inline"> <input type="hidden" name="csrfmiddlewaretoken" value="Gin3qwWulof3IcACZOr3dH1sBU1kCmPEVRID5HN6QjQUy71UAaSKoi56abQnSNiS"> <input type="hidden" name="next" value="/coc" /> <button type="submit" name="language" value="en" class="w-full text-left flex justify-between px-4 py-2 text-black hover:bg-gray-100" :class="{ 'bg-gray-100': 'en' === 'en' }" role="menuitem" > English <i class="fas fa-check opacity-30"></i> </button> </form> <form action="/set_language/" method="post" class="inline"> <input type="hidden" name="csrfmiddlewaretoken" value="Gin3qwWulof3IcACZOr3dH1sBU1kCmPEVRID5HN6QjQUy71UAaSKoi56abQnSNiS"> <input type="hidden" name="next" value="/coc" /> <button type="submit" name="language" value="fr" class="w-full text-left flex justify-between px-4 py-2 text-black hover:bg-gray-100" :class="{ 'bg-gray-100': 'en' === 'fr' }" role="menuitem" > French </button> </form> </div> </div> </div> <button @click="isOpen = false" class="flex items-center justify-center size-10 rounded-full border"> <i class="fas fa-times"></i> </button> </div> </div> </div> <div class="h-[calc(100vh-64px)] overflow-y-auto"> <nav> <div x-data="{ dropdownOpen: false }"> <button @click="dropdownOpen = !dropdownOpen" class="flex items-center justify-between w-full py-4 px-4 sm:px-6 text-left hover:bg-gray-100"> <span class="text-4xl">Conference</span> <i class="fas fa-chevron-down text-black/30 transition-transform duration-200 mr-2" :class="{ 'rotate-180': dropdownOpen }"></i> </button> <div x-show="dropdownOpen" class="px-4 sm:px-6" style="display: none;"> <a href="/coc" class="block py-3 border-b text-lg text-black text-opacity-80 hover:text-gray-900"> Code of Conduct </a> </div> </div> <div x-data="{ dropdownOpen: false }"> <button @click="dropdownOpen = !dropdownOpen" class="flex items-center justify-between w-full py-4 px-4 sm:px-6 text-left hover:bg-gray-100"> <span class="text-4xl">Resources</span> <i class="fas fa-chevron-down text-black/30 transition-transform duration-200 mr-2" :class="{ 'rotate-180': dropdownOpen }"></i> </button> <div x-show="dropdownOpen" class="px-4 sm:px-6" style="display: none;"> <a href="/news" class="block py-3 border-b text-lg text-black text-opacity-80 hover:text-gray-900"> News </a> <a href="/opportunity_grants" class="block py-3 border-b text-lg text-black text-opacity-80 hover:text-gray-900"> Opportunity Grants </a> </div> </div> <div x-data="{ dropdownOpen: false }"> <button @click="dropdownOpen = !dropdownOpen" class="flex items-center justify-between w-full py-4 px-4 sm:px-6 text-left hover:bg-gray-100"> <span class="text-4xl">Speaking</span> <i class="fas fa-chevron-down text-black/30 transition-transform duration-200 mr-2" :class="{ 'rotate-180': dropdownOpen }"></i> </button> <div x-show="dropdownOpen" class="px-4 sm:px-6" style="display: none;"> <a href="/speaking" class="block py-3 border-b text-lg text-black text-opacity-80 hover:text-gray-900"> Speaking at Djangocon Africa </a> <a href="/speaker_resources" class="block py-3 border-b text-lg text-black text-opacity-80 hover:text-gray-900"> Speaker Resources </a> <a href="https://pretalx.com/djangocon-africa-2025/cfp" class="block py-3 border-b text-lg text-black text-opacity-80 hover:text-gray-900"> Call for Proposals </a> </div> </div> <div x-data="{ dropdownOpen: false }"> <button @click="dropdownOpen = !dropdownOpen" class="flex items-center justify-between w-full py-4 px-4 sm:px-6 text-left hover:bg-gray-100"> <span class="text-4xl">Sponsors</span> <i class="fas fa-chevron-down text-black/30 transition-transform duration-200 mr-2" :class="{ 'rotate-180': dropdownOpen }"></i> </button> <div x-show="dropdownOpen" class="px-4 sm:px-6" style="display: none;"> <a href="/sponsor_us" class="block py-3 border-b text-lg text-black text-opacity-80 hover:text-gray-900"> Become a Sponsor </a> <a href="/sponsors" class="block py-3 border-b text-lg text-black text-opacity-80 hover:text-gray-900"> Our Sponsors </a> </div> </div> </nav> </div> </div> </header> <main> <div class="dj-container pt-[72px] md:pt-[88px] pb-16"> <h1 class="text-center">Code of Conduct</h1> <div class="flex flex-col gap-y-8 md:max-w-[740px] mx-auto pt-10 lg:pt-8"> <p> Everybody who participates at DjangoCon Africa in one way or another is required to conform to this Code of Conduct (CoC). This includes attendees, speakers, sponsors, organisers and volunteers. <br /><br /> We will introduce a Code of Conduct team that will be primarily responsible for handling any incidents at the conference. The CoC applies before and throughout the event (including related activities such as social events, and social media). </p> <div> <h2 class="mb-4">Why do we have a Code of Conduct?</h2> <p>Our goals with having this Code of Conduct are:</p> <ul> <li> Helping everyone feel safe and included. Many attendees are first timers, or have had poor experiences in other events. We want to set the expectation that harassment and other unpleasant behavior are not acceptable. So that if people do have an unpleasant experience, they know that’s not neither the norm nor acceptable to us as a community. </li> <li> Helping to build trust that if an incident is reported, we will not respond with victim blaming, and that we will do a thorough investigation. Even, for example, if the incident concerns someone in a position of power. </li> <li> Informing everyone of the expected behavior. We are a diverse community, and having a Code of Conduct makes the expectations of everybody’s behavior explicit and transparent. </li> <li> Having a framework for report handling. The Code of Conduct is the basis for dealing with a report, assessing whether the CoC was violated, and what action should be taken. </li> </ul> </div> <div> <h2 class="mb-4">Our Code of Conduct</h2> <ul> <li> Be kind and considerate to others. Do not insult or put down other attendees. Behave professionally. </li> <li> We are dedicated to providing a harassment-free conference experience for everyone, regardless of race, ethnicity, culture, national origin, colour, immigration status, social and economic class, educational level, sex, sexual orientation, gender identity and expression, age, size, family status, political belief, religion, and mental and physical ability. </li> <li> We do not tolerate harassment of conference participants in any form. This includes offensive comments related to the categories above, deliberate intimidation, stalking, following, harassing photography or recording, sustained disruption of talks or other events, violent threats or language, inappropriate physical contact, and unwelcome sexual attention. </li> <li> Advocating for, or encouraging, any of the above behavior is also not acceptable. </li> <li> Sexual language and imagery are not appropriate for any venue to which the CoC applies. </li> <li> Don’t publish individual photographs of people without their consent. </li> <li> Be careful in the words that you choose. Remember that sexist, racist, and other exclusionary jokes can be offensive and unwelcoming to those around you. </li> <li> Excessive swearing and offensive jokes are not appropriate for DjangoCon Africa. </li> </ul> </div> <div> <h2 class="mb-4">Where does the Code of Conduct apply?</h2> <p> This Code of Conduct applies to all conference related spaces. That includes, but is not limited to: </p> <ul> <li>The conference venue(s)</li> <li>The conference hotel(s)</li> <li>Any conference related social activities</li> <li> Slack channels, tweets with the conference hashtag, and other online media </li> </ul> <br /> <p> The Code of Conduct does not exclusively apply to events on the conference agenda. For example, if after a scheduled social event you go to a bar with a group of fellow participants, and someone harasses you there, we would still treat that as a CoC violation. </p> </div> <div> <h2 class="mb-4">What can happen if the CoC is violated?</h2> <p> In case of a Code of Conduct violation, some of the most common actions organisers may take are: </p> <ul> <li>Demanding that a participant stops their behavior.</li> <li> Demanding that a participant prevents further contact with certain other participants. </li> <li>Not publishing the video of a conference talk.</li> <li>Cancelling a conference talk.</li> <li>Removing a participant from the conference, without refund.</li> </ul> <br /> <p> The action taken is at the discretion of the Code of Conduct team. Participants are expected to comply immediately, and further action may be taken in case a participant does not comply. A record will be kept of all incidents. </p> </div> <div> <h2 class="mb-4">Where to report incidents</h2> <p> If a Code of Conduct incident happens to you, or witness it happening to someone else, please contact the CoC team immediately either in person, or by sending an email to <a href="/cdn-cgi/l/email-protection#bbd8d4d5dfced8cffbdfd1dad5dcd4d8d4d595daddc9d2d8da" class="underline inline-block"><span class="__cf_email__" data-cfemail="b3d0dcddd7c6d0c7f3d7d9d2ddd4dcd0dcdd9dd2d5c1dad0d2">[email protected]</span></a >. In urgent cases, you can also phone us on. <br /> Our Code of Conduct team consists of: </p> <ul> <li>Anna Makarudze</li> <li>Daniele Procida</li> <li>Jessica Upani</li> <li>Humphrey Butau</li> </ul> <br /> <p> The team members will be introduced in person at the conference. You can approach any of them at any time to discuss an incident or concern. You can also ask any other staff to help you find them at the conference. </p> </div> <div> <h2 class="mb-4">Guidelines for reporting incidents</h2> <p> Please do not feel like you may be a burden to us by reporting incidents. Even if you happen to report multiple incidents during the conference. We rather consider reports an opportunity for us to act: by knowing about an incident, we can act on it, and often prevent it from continuing or repeating. But if we don’t know, we can’t take action. <br /><br /> If you are not sure whether the situation was a Code of Conduct violation, or whether it applied to that particular space, we encourage you to still report it. We would much rather have a few extra reports where we decide to take no action, rather than miss a report of an actual violation. We do not look negatively on you if we find the incident is not a violation. And knowing about incidents that are not violations, or happen outside our spaces, can also help us to improve the Code of Conduct or the processes surrounding it. <br /><br />In your report please include, when possible: </p> <ul> <li>Your contact info (so we can get in touch with you)</li> <li> Names (real, nicknames, or pseudonyms) of any individuals involved. If there were other witnesses besides you, please try to include them as well. </li> <li> When and where the incident occurred. Please be as specific as possible. </li> <li> Your account of what occurred. If there is a written record (e.g. tweets or slack messages) please include screenshots, or otherwise a link. </li> <li>Any extra context you believe existed for the incident.</li> <li>If you believe this incident is ongoing.</li> <li>Any other information you believe we should have.</li> </ul> <br /> <p> If you don’t have some of this information, or not at this time, please still make the report anyways. <br /><br /> If you feel unsafe reporting in person, you may choose someone to represent you. In this case, we’d need their contact information, but we’d ask you to make clear that this person represents you. </p> </div> <div> <h2 class="mb-4">Other assistance</h2> <p> Conference staff will be happy to help participants contact hotel/venue security or local law enforcement, provide escorts, or otherwise assist those experiencing harassment to feel safe for the duration of the conference. However, we will not contact security or law enforcement without your consent, except when not doing so would create significant danger for other participants. <br /><br /> We value your attendance, and look forward to seeing you at DjangoCon Africa. <br /><br />This Code of Conduct was adapted from<a href="" class="underline" >DjangoCon Europe 2018</a > Code of Conduct written by <a href="" class="underline" >Sasha Romijn</a >. </p> </div> </div> </div> </main> <footer> <img src="/static/images/footer/desktop-footer.8463986f4c14.png" alt="footer-bg" class="w-full" /> <div class="bg-[#313114] text-white text-center pb-12"> <div class="dj-container flex flex-col items-center gap-y-6"> <img src="/static/images/footer-logo.1bc5615ce7c3.svg" alt="logo" /> <div class="flex gap-x-4"> <a target="_blank" href="https://github.com/djangocon"><img src="/static/icons/github-icon.03b355addf83.svg" alt="github icon" class="size-[44px]"/></a> <a target="_blank" href="https://mastodon.social/@djangoconafrica@fosstodon.org"><img src="/static/icons/mastodon-icon.d32d3525790d.svg" alt="mastodon icon" class="size-[44px]"/></a> <a target="_blank" href="https://bsky.app/profile/djcafrica.bsky.social"><img src="/static/icons/bluesky-icon.5d6dda2f02dc.svg" alt="bluesky icon" class="size-[44px]"/></a> <a target="_blank" href="https://x.com/djcafrica"><img src="/static/icons/x-icon.88d94c22c85c.svg" alt="x icon" class="size-[44px]"/></a> <a target="_blank" href="https://facebook.com/djcafrica"><img src="/static/icons/facebook-icon.a219cc9814f4.svg" alt="facebook icon" class="size-[44px]"/></a> <a target="_blank" href="https://linkedin.com/company/djcafrica"><img src="/static/icons/linkedin-icon.8385a22c8349.svg" alt="linkedin icon" class="size-[44px]"/></a> <a href="/cdn-cgi/l/email-protection#caa2afa6a6a58aaea0aba4ada5a9a5a4e4abacb8a3a9ab"><img src="/static/icons/email-icon.93cf5200fcee.svg" alt="email icon" class="size-[44px]"/></a> </div> <p>Website designed by <a href="https://www.linkedin.com/in/hopeadoli" target="_blank" class="underline cursor-pointer">Hope Adoli</a> and built with <span class="text-red-800">❤</span> by <a class="underline cursor-pointer" href="/">the community</a></p> <p>Other Django Events: <a class="underline cursor-pointer" href="https://djangocon.us" target="_blank">DjangoCon US</a> • <a class="underline cursor-pointer" href="https://djangocon.eu" target="_blank">DjangoCon Europe</a> • <a class="underline cursor-pointer" href="https://djangocon.com.au" target="_blank">DjangoCon Australia</a></p> <p>Our <a class="underline cursor-pointer" href="/coc">Code of Conduct</a></p> </div> </div> </footer> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script></body> </html>