Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Run multiple local terminal processes with Fabric
new to using fabric. I have a project with a django backend and angular front end. I'm trying to make running the project locally easier with a fabfile. Here is the part of the script where I'm stuck... # activate venv and start backend server with lcd(projectpath), prefix('. venv/bin/activate'): local(projectpath+backendfolder+'manage.py runserver') # start frontend server <==== FAB STOPS HERE!! with lcd(projectpath+frontendfolder): local('npm start') I have managed to get my virtual environment started and manage.py runserver to work. However fabric stops there and doesnt continue executing starting my angular server. This is obviously because this is a serial process. How can I get the angular server running as a new terminal process after my django server is running? -
Django many2many is a subset of another set
Given a model with an m2m field, let's say Article has multiple Authors. What is the most efficient way to get all the articles in which the set of their authors is a subset of another set? class Article(models.Model): authors = models.ManyToManyField('Author') Get all articles that were written by one or many of the authors in this list but doesn't have any author that is not part of this list. authors_list = ['Tom', 'John', 'Sara', 'Kati'] Articles written by 'Tom' would match. Articles written by 'Tom' and 'Sara' would match. But, Articles written by 'Tom' and 'Alter' would NOT match. -
MultipleChoiceFilter with distinct values Django
I am not able to make a multiple choice filter with checkbox in Django. I researched but couldn't find anything practical either than to use django_filters.MultipleChoiceFilter. I want to show as Checkboxes the distinct values of Category column from my Book Model (e.g.: "Fiction", "Romance", "Improvement") . Using PostgreSQL model class Book(models.Model): name = models.CharField(max_length=350) author = models.CharField(max_length=350) category = models.CharField(max_length=200) def __str__(self): return self.name filter class BookFilter(django_filters.FilterSet): name = django_filters.CharFilter(lookup_expr='icontains') author = django_filters.CharFilter(lookup_expr='icontains') category = django_filters.MultipleChoiceFilter(widget=forms.CheckboxSelectMultiple,) #does not contain any parameters to enter any queryset or anything class Meta: model = Book fields = ['name', 'author', 'category',] views class SearchBooksView(TemplateView): template_name = "booksearch.html" book_list = Book.objects.all() def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) book_filter = BookFilter(self.request.GET) context['book_filter'] = book_filter return context booksearch.html <h1 class="h1"> Book Search </h1> <form method="get"> {{ book_filter.form.as_p }} <button type="submit">Search</button> </form> <ul> {% for book in book_filter.qs %} <li>{{ book.name }} - {{ book.author}} - {{ book.category}}</li> {% endfor %} </ul> </h1> Can you lend a helping hand? Thank you! -
Leaflet js remove one layer, add another layer and filter by variable of first layer
i have an leaflet map serving data over two urls out of a database. i use django and django-leaflet. python 3.5, postgresql 9.6. layerA is showed when loading the page. opening the popup of layerA i want have the possibility to load layerB by clicking in the popup of an item in LayerA. Items in LayerB belong to certain items in LayerA connected by foreign key. heres my code: function map_init_basic (map, options) { urlA = "http://127.0.0.1:8000/data.A" // Geojson urlB = "http://127.0.0.1:8000/data.B" // Geojson layerA = L.geoJson(null, { pointToLayer: function(feature, latlng) { return L.marker(latlng, {icon: hvIcon}); }, onEachFeature: function( feature, layer) { popupText = "button to call layerA" + "<button id='theirFlats' type='button' class='btn btn-link' onclick='getLayerB(\""+feature.id+"\");'>show layerB:</button>"; layer.bindPopup(popupText); } }); layerB = L.geoJson(null, { filter: function(feature, layer) { {return feature.properties.id_hv == id_layerB;}; }, pointToLayer: function(feature, latlng) { return L.marker(latlng, {icon: whgIcon}); } }); $.getJSON(urlA, function(data){ layerA.addData(data); }); layerA.addTo(map); } // end map_init function getLayerB(id_layerA){ alert(id_layerA); // alerts the right id layerB.remove(); // works, removes the layerB alert(urlB) $.getJSON(whgurl, function(data){ layerB.addData(data); console.log(data); }); layerB.addTo(map); alert(layerB) map.fitBounds(layerB); } i get the following errors: TypeError: t is undefined and ReferenceError: id_layerB is not defined -
how to import stl , mesh to Django views.py or models.py
I'm trying to import stl , mesh to Django for analysis 3d model on the website. but , i couldn't do that and i saw this message view.py from stl import mesh 'ImportError: cannot import name 'mesh' even i already installed numpy , stl using pip. How to solve this problem? As i used that 'import mesh from stl ' on the jupyter notebook , i have never seen this error before. Thank you -
Django create CustomUser model
Folks, I'm trying to create my own User model by extending the AbstractBaseUser model provided by Django. However, I keep on getting the following error when migrating: ValueError: The field admin.LogEntry.user was declared with a lazy reference to '<app_name>.user', but app '<app_name>' doesn't provide model 'user'. What I have done so far is the following: In app/models.py added CustomUser class together with CustomUserManager with relevant fields and all. In app/admin.py I've added this: from django.contrib.auth import get_user_model from django.contrib.auth.admin import UserAdmin from django.contrib.auth.forms import UserCreationForm, UserChangeForm from <app_name>.models import CustomUser class CustomUserChangeForm(UserChangeForm): class Meta: model = get_user_model() fields = ('email',) class CustomUserCreationForm(UserCreationForm): class Meta: model = get_user_model() fields = ('email',) def clean_username(self): username = self.cleaned_data["username"] try: get_user_model().objects.get(username=username) except get_user_model().DoesNotExist: return username raise forms.ValidationError(self.error_messages['duplicate_username']) class CustomUserAdmin(UserAdmin): form = CustomUserChangeForm add_form = CustomUserCreationForm fieldsets = ( (None, {'fields': [('username', 'password'),]}), (('Personal info'), {'fields': ('first_name', 'last_name', 'email')}), (('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}), (('Important dates'), {'fields': ('last_login', 'date_joined')}), ) admin.site.register(CustomUser, CustomUserAdmin) Apart from that there is this added to seetings.py AUTH_USER_MODEL = '<app_name>.CustomUser' Everything that I found so far suggests that the above given code should make this work, but it doesn't. I spent like 4-5 hours already and I still can't … -
Django doesn't check passwords when reset
I'm using Django's password_reset forms with overriden html files, and when I pushed my code to my server, I could suddenly make the password 1 character long, where they should at least be 8 characters long. BUT it does show an alert if password1 and password2 aren't identical On my local machine the Django project was created using 1.11.3, and on the server the Django project was created in version 1.8.7.The form I use for posting the new password: <form method="POST"> {% csrf_token %} <input name="new_password1" class="form-control" type="password" placeholder="Adgangskode"> {% for key, value in form.errors.items %} <strong>{{ value|escape }}</strong> {% endfor %} <input name="new_password2" class="form-control" type="password" placeholder="Bekræft adgangskode"> <input type="submit" class="btn btn-default btn-block" value="Bekræft"> </form> The question is: why does Django not properly validate the password (checking if it's are entirely numeric, or if it's longer than 8 characters), on the server, but perfectly on my local machine? Thanks -
Django: Redirect is Not Working
Here's my view, class ModelLike(RedirectView): def get_redirect_url(self, *args, **kwargs): id = self.kwargs.get('id') obj = get_object_or_404(Model, id=id) user = self.request.user if user.is_authenticated(): if user in obj.likes.all(): obj.likes.remove(user) else: obj.likes.add(user) I used return redirect(request.META['HTTP_REFERER']) but it gives an error "name 'request' is not defined" I can't use the return obj.get_absolute_url() because i'm using this view at several places. So, how can I redirect user to the same page after Like? -
Django inline forms
I have to models, an Article and a Photo. There is a many2many relation between them. I need to design an Admin form that works better for editing them. I batch upload photos and the Photo models are created. Then when I write the articles, I want to be able to edit the Photo models as an inline form. When I set it up as described so far, I get an article edit form, with a selector to click on the name of each photo. I would like to have all unassigned photos shown, with a text box for the cutline on each photo and checkbox. When I put a checkbox and save the article the pictures are associated with that article. I also need to save the updated Photo objects with the text under each photo. Suggestions for how I should go about this? -
NameError at /accounts/register/ name 'Honeyword' is not defined
hye there . how to import my new custom password hasher ? it just give me this error : NameError at /accounts/register/ name 'Honeyword' is not defined hashers.py : class MyHoneywordHasher(PBKDF2PasswordHasher): algorithm = "honeyword_base9_tweak3_pbkdf2_sha256" iterations = 36000 digest = hashlib.sha256 def salt(self): salt = get_random_string() while Honeyword.objects.filter(salt=salt).exists(): salt = get_random_string() return salt -
Create and fill a test database
Django==1.11.6 The problem is: first test runs smoothly, but the second test faces an empty database. StaticLiveServerTestCase is a TestCase subclass. Let's have a look at the documentation about setUpClass: https://docs.python.org/3.6/library/unittest.html#unittest.TestCase.setUpClass Well, nothing is clear. But it seems that database is created in the SetUpClass. And as far as I can understand, the database created once and exists till the last method of the class finishes. Well, I seem to be wrong as the second method faces an empty database. Could you help me organize a test database, and fill it once for all the methods. class GeneralMixin(StaticLiveServerTestCase): """ Load selenium and log in. Afterwards quit webdriver. """ fixtures = ['users.yaml'] def _login(self): .... def setUp(self): self._login() @classmethod def setUpClass(cls): super(GeneralMixin, cls).setUpClass() cls.selenium = WebDriver() cls.selenium.implicitly_wait(10) @classmethod def tearDownClass(cls): cls.selenium.quit() super(GeneralMixin, cls).tearDownClass() class FrameTests(GeneralMixin): @classmethod def setUpClass(cls): super(FrameTests, cls).setUpClass() create_dateranges() create_frames() def test_id_frame_1(self): """ User visits frame 1. And sees that ID 1 is shown in the frame detail page. """ FRAME_ID = "1" self.selenium.\ get('{}{}'.format(self. live_server_url, reverse('frame_detail', kwargs={"pk": FRAME_ID}))) id_element = self.selenium.\ find_element_by_id("object_id") found_id = id_element.text self.assertEqual(found_id, FRAME_ID) def test_id_frame_2(self): """ User visits frame 2. And sees that ID 2 is shown in the frame detail page. """ FRAME_ID … -
Django Boolean Field Won't Update
I have a model which has a latest field to determine if a particular instance is the latest definition. When adding a new row to the db I want to make sure to mark latest as false for the already existing record. latest_version = Segment.objects.filter(segment_name=segment_name, third_party_type=third_party_type).first() if latest_version: latest_version.latest = False latest_version.save() This seems relatively straight forward but the latest field will not update and stays as True. -
Django - access to item in list with a changing index
I used to code in C#. I want to use python to do something like: int start_index = 4; List<int> list = { ... } for(int i = start_index;i < 10;i++){ list[i].dosomething(); } this is how I tried in Django {% with 0 as starting_index %} {% for comment in comments %} <!--set a variable to limit the amount of comment on a page--> {% with forloop.counter as index %} {% if index < 3 %} <div class="comment_body"> <div class="content_block"> <p>{{comments[index]}}</p> </div> </div> {% endif %} {% endwith %} {% endfor %} {% endwith %} This code is obviously not working. Can anybody help me with this problem? Thanks in advance! -
Django extra user registration details not saving to database
I have been trying to extend the django user profile but it won't save the extra details to the database which is a user_type of business, student, tourist and I can't figure out why. Any help would be appreciated. It doesn't save in the DB as null, it is saving as just blank. Using python 3 with the latest version of django. Forms.py: from django import forms from django.contrib.auth.forms import UserCreationForm from django.forms import ModelChoiceField from django.contrib.auth.models import User, Group from .models import UserProfile class RegisterForm(UserCreationForm): first_name = forms.CharField(max_length=50, required=False, help_text='Not required.') last_name = forms.CharField(max_length=50, required=False, help_text='Not required.') email = forms.EmailField(max_length=300, required=True, help_text='Please input a valid email address.') user_types = ((1, 'Business'), (2, 'Student'), (3, 'Tourist')) user_type = forms.ChoiceField(choices = user_types) class Meta: model = User fields = ('username', 'first_name', 'last_name', 'email', 'user_type', 'password1', 'password2',) models.py from django.db import models from django.contrib.auth.models import User from django.dispatch import receiver from django.db.models.signals import post_save from django import forms # Create your models here. ADMIN = 0 BUSINESS = 1 STUDENT = 2 TOURIST = 3 class UserProfile(models.Model): user_choices = ( (0, 'Admin'), (1, 'Business'), (2, 'Student'), (3, 'Tourist'), ) # Link UserProfile to User model user = models.OneToOneField(User, on_delete=models.CASCADE) # Add attributes … -
Django - ModelChoiceField validation
I have a simple form witch ModelChoiceField. This is a part of my view.py file: def premium(request, id): context = {} try: site = Site.objects.get(id=id) except Site.DoesNotExist: raise Http404("Nie ma takiej strony") if request.method == 'POST': premium_form = PremiumForm(request.POST) if premium_form.is_valid(): # group = Group.objects.get(id=request.POST["kod"]) print('OK') else: print('NOT OK') else: premium_form = PremiumForm(site) premium_form.fields['group'].queryset = premium_form.fields['group'].queryset.exclude(group_name=site.group) context['site'] = site context['form'] = premium_form context['category'] = site.category context['subcategory'] = site.subcategory return render(request, 'mainapp/premium.html', context) This is my form: class PremiumForm(forms.Form): def __init__(self, site, *args, **kwargs): super(PremiumForm, self).__init__(*args, **kwargs) self.fields['group'].initial = 2 self.fields['group'].empty_label = None group = forms.ModelChoiceField( queryset=Group.objects.filter(is_active=True), help_text="<div id='group'></div>", label="Some text", required=False) My premium.html file: <form method="post" action="" class="form-horizontal"> {% csrf_token %} {% bootstrap_form form layout='horizontal'%} <br> {% bootstrap_button "Submit" size='large' button_type="submit" button_class="btn-primary btn-main-add" %} </form> When I press "Submit" button I get "NOT OK". I can't resolve this problem. I don't have any idea how to validate forms.ModelChoiceField. Thanks for any help. -
Cant get to data to save from form Django
I am creating a job board site. Right now I can successfully register an Employer but when I try to create a job listing while logged in as an Employer, the data from the form does not save to the database. I have the following models.py: from django.db import models from django.contrib.auth.models import User from django.db.models.signals import post_save from django.dispatch import receiver from django.http import HttpResponse # Create your models here. class Employer(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) def __str__(self): return self.user.first_name @receiver(post_save, sender=User) def create_employer(sender, instance, created, **kwargs): if created: Employer.objects.create(user=instance) @receiver(post_save, sender=User) def save_employer(sender, instance, **kwargs): instance.employer.save() class Job(models.Model): poster = models.ForeignKey(Employer, on_delete=models.CASCADE) job_title = models.CharField(max_length=50) establishment_name = models.CharField(max_length = 50) details = models.TextField(max_length = 2000) salary = models.CharField(max_length = 20) address = models.CharField(max_length = 50) state = models.CharField(max_length = 20) zip_code = models.CharField(max_length = 10) def __str__(self): return self.job_title + " - " + self.establishment_name \ + ", " + self.poster.user.first_name + " " +self.poster.user.last_name A user can register as an employer just fine, but I am having problems getting Jobs to save to the database. Once a user registers/logs in as an employer they are redirected to employer_home.html, where an employer can post a job: {% extends … -
How to make a button click update the database and redirect to a view in Django?
I have been struggling with this for a while, any help would be appreciated! Basically, what I want to do is click an HTML button in Django, change a field in the database (of the object with the primary key in question), and redirect back to home. An example for clarity: Currently, I am working in the url: http://127.0.0.1:8000/result/edit/1/. The /1/ is the primary key of the model I want to change. The model is a custom group-model, with a field called "status". Status can be "approved", or "not approved": status = models.CharField(max_length=30, default=Status.not_sent, choices=Status.choices(), null=False) In the url result/edit/1/ I have an "Approve" button. When I click the button I want to change status in the model, and save that in the database. Also, after changing status I would like to redirect back to home. I have written the following method in views to do it: def approve_group(request, pk): group = Group.objects.filter(pk=pk) group.status = Status.approved group.save() return redirect(request, 'home') In the html, I have created the following button: <a href="{% url 'resultregistration:approve_group' %}" /> <button id="approve-btn" />Approve</button> </a> My reasoning is that the button should call this URL, which should again call the function in the view: url(r'^result/approve/(?P<pk>\d+)/$', views.approve_group, … -
Ghostscript/Imagemagick is not working in Django
I am working on a Django/Django REST framework based web application. I am building an API that slice pdf to every page, and convert them to image. Here are some of my code. with Image(filename=os.path.join(tmp_dir, pdffilename)) as img: for i, page in enumerate(img.sequence): file = '%s-%d.jpg' % (imagefilename, i + 1) Image(page).save(filename=file) filelist.append(file) but I am getting this error: DelegateError: FailedToExecuteCommand `'gs' -sstdout=%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 '-sDEVICE=pngalpha' -dTextAlphaBits=4 -dGraphicsAlphaBits=4 '-r72x72' '-sOutputFile=/var/folders/kl/5qf5q4x50xj2rbdp8t2prsbh0000gn/T/magick-26897HyfIoUTUbASw%d' '-f/var/folders/kl/5qf5q4x50xj2rbdp8t2prsbh0000gn/T/magick-26897y4uJPEzsfHCE' '-f/var/folders/kl/5qf5q4x50xj2rbdp8t2prsbh0000gn/T/magick-268970ovMV9WfGDbE'' (1) @ error/pdf.c/InvokePDFDelegate/292 I am using python 2.7.10 / Django 1.9. And, of course, installed Ghostscript(9.2.2) and imagemagick(6.9.9). I am not sure why this is not working. Would you like to help me? Any idea why this isn't working for me? -
DJango CreateView not setting attributes before data is saved to the DB
New to using Django over here. I am trying to create a DJango form that will save data to the database. To do this, I am using CreateView When calling the URL that is to "do the work", I have it set up as follows (so, a parameter is being passed in as well) url(r'^owner/contacts/add/(?P<tenantid>[0-9]+)/$', views.MstrstoreheadcontactCreateView.as_view(), name='owner-contact-add'), Problem: When trying to save data to the DB, I get an error that seems to be due to some fields not being set properly the exact error message I am getting is: The above exception (ORA-02291: integrity constraint (ORAAPPS.SYS_C009216) violated - parent key not found) was the direct cause This is how the Model is defined: class Mstrstoreheadcontact(models.Model): tenantid = models.ForeignKey('Mstrauthowner', models.DO_NOTHING, db_column='tenantid', blank=True, null=True) contactid = models.BigIntegerField(primary_key=True) genderid = models.BigIntegerField(blank=True, null=True) firstname = models.CharField(max_length=20, blank=True, null=True) lastname = models.CharField(max_length=20, blank=True, null=True) officephoneno = models.CharField(max_length=20, blank=True, null=True) cellphoneno = models.CharField(max_length=20, blank=True, null=True) class Meta: managed = False db_table = 'MstrStoreHeadContact' it was created using the inspectdb option (used to auto-generate classes for tables that already exist in a database) This is how the CreateView is being defined in views.py class MstrstoreheadcontactCreateView( CreateView ): model = Mstrstoreheadcontact fields = [ 'firstname', 'lastname', 'officephoneno', … -
Django Python How to Compare Encrypt User's Password
I am working a project which is like CMS (Content Management System) for a website. I am developing this system with django python. But I am new to django python. I have my own User model (not django user model) that contains some fields like username, email, password etc. and I create new user from my own admin panel. How can I compare encrypted password with user's password that post on login page. For example first time I create user, the password for 123 saved on db like pbkdf2_sha24123$000asd$... After that I am trying to login with password 123 but I get error that the passwords are not equals. from django.contrib.auth.hashers import make_password from account.models import myUsers password = make_password(request.POST.get('password')) email = request.POST.get('email') if myUsers.password == password and myUsers.email == email: #make login and redirect to panel else: #show error message -
Django passing parameter to CreateView and filling the form with it
I want to make a CreateView with the form already completed with an argument that will be passed to it from another view. There is the initial view with an input field. Like this: <form role="form" action="" method="post"> {% csrf_token %} <div class="col-sm-6"> <div class="form-group"> <div class="form-line"> <label>{{form.cpf.label}}</label><strong style="color:red;"> *</strong> {% if form.cpf.errors %}<label class="error">{% for error in form.cpf.errors %}{{error}}{% endfor %}</label>{% endif %} {{form.cpf}} </div> </div> </div> <button class="btn btn-success foot-btn" type="submit"><i style="vertical-align:middle" class="material-icons">add</i><span style="vertical-align:middle">Verificar</span></button> </form> When the user submits this form he will be redirected to another page. Asking if he wants to insert that value in the DB. Right now I'm trying to redirect like this, trying to pass the POST value as a parameter to the CreateView return redirect(reverse('blacklist:addcpfview', args=(request.POST['cpf'],))) But I can't seem to get this parameter in the CreateView. I know this I'm probably very wrong in the way I'm currently doing, but I'm a beginner with Django and want to know the best way to do this. -
Django: Redirect "name 'request' is not defined"
Here's my View, class ObjLike(RedirectView): def get_redirect_url(self, *args, **kwargs): id = self.kwargs.get('id') obj = get_object_or_404(Data, id=id) user = self.request.user if user.is_authenticated(): if user in obj.likes.all(): obj.likes.remove(user) else: obj.likes.add(user) So after this view how can I redirect user to the same page? I used "return redirect(request.META['HTTP_REFERER'])" but it gives an error "name 'request' is not defined" I can't use the get absolute URL method, i'm using this view at several places. So, how can I do that? -
Can`t fing static files Django
I have macOS Sierra and modified my old Django-project ( project was created on Linux system, maybe this is called some bugs ) I have folder static and folder landing inside static And when I run the server, I have some next messages: GET /static/landing/img/397x300/03.jpg HTTP/1.1" 404 1691 this is my settings file with variable static - STATIC_DIR = os.path.join(BASE_DIR, 'static') STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), '/Users/milkiweed/Documents/python/django/psy_site/static' -
Django - Filtering user information related to the URL
I have 4 models: Blogger, User, Post and Comment. Here is the blogger model. class Blogger(models.Model): username = models.OneToOneField(User, related_name='bloggers') blogger_bio = models.CharField(max_length=1000) Now, i want to display username and blogger_bio depending to the URL. For eg, is someone is using: /testuser, the template will filter username and blogger_bio of only user named testuser. How to filter this Dynamically? -
Django URL patterns to serve external webpack bundle
I'm writing a django rest framework API (backend) with a react SPA frontend. For the production environment, the front end is served up via nginx at http://example.com/ and the backend is proxied to gunicorn and served from the same domain with a different path - http://example.com/api/ This is all working fine in production, there are no CORS issues as the frontend and backend are both served up under the same domain via nginx. For local development, I want to be able to replicate a similar setup using ./manage.py runserver and have django serve up the frontend from project/frontend/dist (built by npm build seperately). Has anyone got any urlpattern wizardry that will allow this to happen and also let the react-router play nicely? I just can't figure it out and it's starting to drive me nuts... The project structure is something like this if it helps in any explanations. Project | ── backend │ ├── apps │ ├── config | | ├── settings.py | | ├── settings_local.py | | ├── urls.py │ ├── manage.py │ ├── requirements.txt │ └── venv ├── frontend │ ├── dist (contains the npm build webpack) │ ├── node_modules │ ├── package.json │ ├── package-lock.json │ ├── …