8 ms·
I've been working with Django for almost my whole career, since 1.1. It's a joy to use, and blows any other web framework I've used out of the water when it com
by fredley 8y ago
I've been working with Django for almost my whole career, since 1.1. It's a joy to use, and blows any other web framework I've used out of the water when it comes to actually just building stuff.
Django is a fantastic boring[1] tool, and seeing boring updates like this is great.
1: http://mcfunley.com/choose-boring-technology http://mcfunley.com/choose-boring-technology
- blackrock 8y agoWhat do you use to write your front end Javascript?
- anchpop 8y agoDjango fan here, if you're trying to use Django with react you may be interested in this: https://github.com/anchpop/cookiecutter-django https://github.com/anchpop/cookiecutter-django I wrote it for my own convenience but others may find it useful.
- deleted 8y ago[deleted]
- johnthedebs 8y agoNot OP, but I've also been using Django for (more than) my whole career and I use React on the frontend. If you're curious about the frontend path I took, it was roughly: * jQuery with no framework * Backbone (for a couple years) * Backbone + Marionette (for a couple more years) * Angular (for about a week) * React (for the past few years)
- blackrock 8y agoThanks for the input. Comments like these are insightful. What do you think of Vue.js?
- ergo14 8y agoVue looks nice, but nowdays I'd pick something like lit-element(lit-html) or stencil.
- deleted 8y ago[deleted]
- duiker101 8y agoI have spent some time using Vue.js and Django as a backend and I have been pretty satisfied with the results! I will probably try React next just to make sure I am not missing anything. I tried using node as a backend but I couldn't find any framework on the level of Django so I went back to it. There are some pretty decent boilerplates already to setup a Django/Vue website if you look for them.
- kennydude 8y agoVue is a pleasure to build stuff in. It just seems to work well, especially with nice things like two-way binding out of the box.
- johnthedebs 8y agoI've heard great things about Vue.js (mostly on HN) but I haven't tried it myself. I'm pretty invested in React (I use it at work and for personal projects), and I find it to be a pleasure to use so I'm not actively seeking out alternatives. State management with React is another story; I've used Reflux and Redux a lot, and am experimenting with Mobx now.
- oneweekwonder 8y agoWhen you moved to Angular and later to React did you have any jQuery heavy libraries? I'm using stuff like slickgrid[0], jquery-ui datepicker, json-editor[1] and wonder how I will drive these components from something like Angular or React? doh, quickly googled for the github links below and saw there now a slickgrid-es6[2] fork which I have not tried. But my question still stand: how do you drive jquery libs from newer frameworks? [0]: https://github.com/6pac/SlickGrid/wiki https://github.com/6pac/SlickGrid/wiki [1]: https://github.com/json-editor/json-editor https://github.com/json-editor/json-editor [2]: https://github.com/DimitarChristoff/slickgrid-es6 https://github.com/DimitarChristoff/slickgrid-es6
- conradfr 8y agoI have encapsulated jQuery (including Bootstrap) plugins in AngularJS, React and Vue in the past. They all allow you to access a DOM node somehow. Maybe it's frowned upon but I don't really like to use those (usually partial) Bootstrap re-implementation, especially in non-SPAs where you already have jQuery and/or Bootstrap. Of course it's becoming less and less necessary.
- always_good 8y agoYou can access the raw DOM node from a React component. On component mount/unmount, you can apply a jQuery library to the DOM node and optionally clean it up. It's the same way you can wrap a <canvas> node with a React component and otherwise do all your draws outside of React (like for a game). This way the node is still integrated into your React app but React does nothing more than create/remove it.
- johnthedebs 8y agoOther users have already commented, but basically you can wrap jQuery libraries in React components and do a bit of extra work in the lifecycle methods (componentDidMount, componentWillUnmount, etc.) to manage the jQuery bits. Once you've wrapped it in a component, you can more or less drop that component anywhere in your view hierarchy and not have to think about the fact that it's using jQuery under the hood. This highlights one of my favorite things about React and similar frameworks, which is that it's the closest thing to actual, useful encapsulation of components I've seen in a frontend framework. It's not perfect, but it's much better than everything I used before it.
- mrfusion 8y agoI’m curious what makes react your top pick?
- johnthedebs 8y agoCompared with Backbone, I was able to compose and re-compose component structures much more easily. Compared to Angular (which I admittedly don't really know) the API learning curve felt very short and I was able to wrap my head around it very quickly and be productive without constantly looking things up.
- Franciscouzo 8y agoNot OP either, but I've been using Django REST framework with React.js, and I'm really enjoying it.
- knicholes 8y agoAny tips for how to use JWT authentication and get around CSRF tokens being in forms when combining DRF with a JS SPA UI?
- kennydude 8y agoThe way I've always done it is to not log the user in to a Django session. That way the SPA is the thing which holds the authentication, be it JWT or any other kind of token. If any other site tries to POST to the API on behalf of the current user they'll get a "Authentication credentials required" message.
- theptip 8y agoIf you want JWT, you can use https://github.com/GetBlimp/django-rest-framework-jwt https://github.com/GetBlimp/django-rest-framework-jwt -- that provides another authentication class, and you can then auth with `Accept: Bearer <jwt>`. If you don't need JWT (I'd probably leave it out next time round) then Django Rest Framework comes with a simpler bearer token auth class (among others): http://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication http://www.django-rest-framework.org/api-guide/authenticatio.... edit to add - if you're asking specifically about sharing sessions between the JS app and the Django server-side form, I believe this is what you're looking for:http://www.django-rest-framework.org/api-guide/authentication/#sessionauthentication http://www.django-rest-framework.org/api-guide/authenticatio..., i.e. you'll still need to pass the csrf token into the JS app.
- ergo14 8y agoIt is worth noting that Pyramid Web Framework is also awesome to use. I see it as a middle ground between Django and Flask. The scaffolds make some design decisions for project and you can pick from what you like the most. Pyramid allows for extensible applications and never gets in your way. The most critical Python infrastructure (PyPi) is now built with it, if you haven't tried it give it a shot. It is one of most well thought out frameworks for python in my opinion. I've made a tutorial for it: https://docs.pylonsproject.org/projects/pyramid-blogr/en/latest/ https://docs.pylonsproject.org/projects/pyramid-blogr/en/lat....
- blumomo 8y agoI'm a very happy ist of Pyramid. Using it professionally for various larger applications as well as for pet projects. It's very well thought through. We're providing a GraphQL and integrating it was a breeze.
- audiolion 8y agoI would be interested to hear about how you did pyramid and graphql, ive been following graphene but are there specific tie ins for pyramid? books? articles?
- blumomo 8y agoThe integration is actually straight forward if you use the "graphene" library which you already looked in to. If you use SQLAlchemy, there's even a graphene-sqlalchemy binding which makes it really really easy. Simply add a /graphql view to your Pyramid app such as: from cornice import Service from pyramid.exceptions import HTTPBadRequest from ..schemas import schema graphql = Service( name='graphql', path='/graphql', description="GraphQL", accept='application/json', renderer='json', ) @graphql.post(permission='readwrite') def post_graphql(request): query = request.json_body.get('query') variables = request.json_body.get('variables', None) if not query: raise HTTPBadRequest return schema.execute(query, variable_values=variables, context_value={ 'dbsession': request.dbsession, 'user_id': request.authenticated_userid, })
- OmarGonzalez 8y agoDjango is a fantastic boring[1] tool, and seeing boring updates like this is great. couldn't agree more
- zimablue 8y agoAs a counter point, I tried to use Django for a data-visualisation project and ran into some problems. Everything is built on models, which are kind of activerecord pattern. Django has an inbuilt (and inferior) version of sqlalchemy, so that when you want to push sql past a certain point (define queries more complex than the api) you're pretty much stuck. Now you have codebase with two different database libraries in it. You're probably using an spa so all the view stuff isn't helping, and Django kind of infects your code because it won't run without an initializarltion step so if you have a module importing something that imports Django, any time you use that it needs to initialize Django itself. I don't think that these are mistakes, just choices that they made that make it very good for websites up to a certain (sql/data) complexity and very annoying afterwards.
- akx 8y agoThe Django ORM has raw SQL escape hatches (either fully raw SQL database connections or model instance selections with SQL), and if you do need the SQLAlchemy query builder, slap in something like https://github.com/Deepwalker/aldjemy https://github.com/Deepwalker/aldjemy . As for the initialization stuff -- yes, that's true; whenever Django models are being imported, you do need to have had `django.setup()` called.
- zimablue 8y agoyea good point, I should have mentioned the raw SQL escape hatch, that also isn't an ideal solution. I went for aldjemy/instead them and in retrospect starting with something sqlalchemy native would have been cleaner.
- c0un7d0wn 8y agoWe went the other way around and came up with https://github.com/shosca/django-rest-witchcraft https://github.com/shosca/django-rest-witchcraft and https://github.com/shosca/django-sorcery https://github.com/shosca/django-sorcery to integrate sqlalchemy with django as the project was already using sqlalchemy.
- 8y ago
- ransom1538 8y agoYes! It is just like Rails. Almost as good! Is it Python 2 or Python 3? https://wiki.python.org/moin/Python2orPython3 https://wiki.python.org/moin/Python2orPython3
- deleted 8y ago[deleted]
- godzillabrennus 8y agoMy roommate in College built a site with 0.96 of Django. It’s still running. I think it’s one of if not the longest running commercial Django websites.
- collinmanderson 8y agoI maintain a Django ecommerce site that's been running constantly since July 12, 2007 (at launch it was running against r4984, basically 0.96). Just upgraded it to 2.1 today.
- chocolatkey 8y agoAny struggle with the upgrade?
- collinmanderson 8y agoNo struggle. I regularly develop and test it against Django master with loud warnings so I fix compatibility issues one at a time as they appear in Django master. I also don't use any 3rd party libraries which means I can upgrade right away. In this cycle all I needed to tweak was something related to `use_required_attribute` on a form, and I did that back in March. I needed to add `renderer=None` to to my form field render() method, but I did that back when it was a warning in March 2017.
- paganel 8y agoI have some personal websites that still run on Django 0.96. I also keep the source-code for them in svn and use Trac 0.12 (I think) for pretty-viewing the code in the repository. It’s nice seeing commits you made 11 or 12 years ago.
- spacesarebetter 8y agoI have been using symfony since the 2-3 years because the product is build on symfony. Now i like symfony, because i’m not a big fan of PHP. Anybody knows how Django compares to Symfony. I have glanced through Django documentation few times and it look a little similiar. If somebody has used both frameworks, what are the main advantages of Django over Symfony?
- chipotle_coyote 8y agoWhile "it's in Python and not PHP" immediately comes to mind, a less snarky answer is that Django feels optimized for building bespoke content management systems. Take some time to play around with the automatic admin generation.
- nickserv 8y agoI use both, but we choose Django for all new projects. For advantages of Django vs Symfony, there's first advantages of Python over PHP... In a web design context probably the biggest advantage is having things like asynchronous code where it makes sense and websockets without having to use another technology stack such as node.js. Otherwise I simply find we are more productive using Django, it allows less boilerplate code for similar functionality, there is less complexity involved overall. Disadvantage is maybe for really large projects with many developers, Symfony might be easier to have someone pick up the code since it's more standardized.
- KyeRussell 8y agoI understand that it's played out (both as a general discussion, and as replies to your post) but PHP's shortcomings as a language are so blatant when working with any other okay general purpose language. Community also goes a long way. Back when I dealt in PHP (+whatever framework) and switched to Django, the average competence of people I interacted with in conversations regarding the language / frameworks jumped up considerably. I like standing on the shoulders of giants.
- Humphrey 8y agoTotally agree. I've been using Django since 0.96 and it's is so mature now. Earlier they introduced so many new features... but it's now a very mature framework that doesn't really need any new features.